JavaScrip——switch类型

目录

任务描述

相关知识

严格相等

switch语句

编程要求

任务描述

北美五大湖的名称和面积如下:

名称面积(平方公里)
Superior82414
Huron59600
Michigan58016
Erie25744
Ontario19554

本关任务:根据面积判断湖泊的名字。

相关知识

上一关讲解的是拥有少数分支的if-else结构,实际开发的过程中,还会遇到多分支的情况,比如根据电话号码判断运营商,如果用if-else型条件语句,代码会很长而且难以理解。所幸的是,JavaScript提供了另外一种选择结构:switch语句。

严格相等

在了解switch语句之前,先要知道严格相等的概念,严格相等的符号为===

对于JavaScript中的内置数据类型,如数字,字符串,布尔型等。严格相等要求比较双方的数据类型和值都相等,而相等==只要求比较双方的值相等,因为可以进行数据类型转换。例子如下:

var string = "1";
var number1 = 1;
var number2 = 1;
console.log(string === number1);
console.log(number1 === number2);

输出结果:

false

true

对于JavaScript中的对象类型,严格相等要求双方的引用相同,即必须是同一个对象。如果不是同一个对象,即使双方的属性、值都相同,也被认为不等,比如下面的例子:

var class1 = {
id:251,
name:"class"
}
var class2 = {
id:251,
name:"class"
}
var class3 = class1;
console.log(class2 === class1);
console.log(class3 === class1);

输出结果:

false

true

虽然class1class2的属性名、属性值都相等,但是不满足严格相等,因为它们是不同的对象,指向内存的不同地方。而class3class1严格相等,因为它们指向内存的同一个地方。

switch语句

switch是一种多分支的选择结构,采用等值判断,如下是结构图,其中T表示条件成立,F表示条件不成立,箭头表示语句的执行方向。

switch语句的语法如下:

switch(表达式)
{
    case 值1:语句1;
    break;
    case 值2:语句2;
    break;
    case 值3:语句3;
    break;
    default:语句;
    break;
}

括号中的表达式计算后会得到一个值,该值会从上到下依次与case关键字后面的值比较,如果满足严格相等,则执行相应case后面的语句;如果与所有的值都不满足严格相等,则执行default关键字后的语句。

当和case后面的某一个值完成匹配并执行完语句后,需要用break结束整个的switch选择,否则会与后面的继续匹配。

//函数(方法):根据身份证号前两位判断所在省份
function judgeProvince(idCard) {
    switch(idCard) {
        case 31:console.log("上海");
        break;
        case 32:console.log("江苏");
        break;
        case 33:console.log("浙江");
        break;
        case 34:console.log("安徽");
        break;
        case 35:console.log("福建");
        break;
        case 36:console.log("江西");
        break;
        case 37:console.log("山东");
        break;
        default:console.log("未知");
        break;
    }
}
//调用上面的函数
judgeProvince(36);//输出“江西”

如果不加break,代码会从满足switch条件的地方开始执行,一直执行到最后,不符合的case后面的语句也会被执行。

下面的例子根据输入的分数计算绩点(GPA)

//函数(方法):根据百分制的成绩计算GPA
function calGrade(grade) {
    grade = parseInt(grade/10);//除以10后取整数
    var gpa;
    switch(grade) {
        case 10://注意这后面没有break
        case 9: gpa = 4;break;//90到100均为4
        case 8: gpa = 3;break;
        case 7: gpa = 2;break;
        case 6: gpa = 1;break;
        default: gpa = 0;break;
    }
    return gpa;
}
//调用上面的函数
console.log(calGrage(100));//输出4

grade10的时候,没有break,会往下一直执行;执行到grade9的时候,有break,会终止switch语句块,此时 gpa被赋值4,所以90100分的返回值都是4

编程要求

本关的编程任务是补全右侧代码片段中BeginEnd中间的代码,具体要求如下:

  • 根据面积参数a返回湖泊的名字,湖泊的名称和面积的对照表在最上面的任务描述里面,这里不再赘述;

  • 没有对应的湖泊返回error

function mainJs(a) {
    a = parseInt(a);
	//请在此处编写代码
    /********** Begin **********/
    var s = "error";
    switch (a) {
        case 82414: s = "Superior"; break;
        case 59600: s = "Huron"; break;
        case 58016: s = "Michigan"; break;
        case 25744: s = "Erie"; break;
        case 19554: s = "Ontario"; break;
    }
    return s;
	/********** End **********/
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值