目录
任务描述
相关知识
严格相等
switch语句
编程要求
任务描述
北美五大湖的名称和面积如下:
名称 | 面积(平方公里) |
---|---|
Superior | 82414 |
Huron | 59600 |
Michigan | 58016 |
Erie | 25744 |
Ontario | 19554 |
本关任务:根据面积判断湖泊的名字。
相关知识
上一关讲解的是拥有少数分支的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
虽然class1
和class2
的属性名、属性值都相等,但是不满足严格相等,因为它们是不同的对象,指向内存的不同地方。而class3
和class1
严格相等,因为它们指向内存的同一个地方。
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
当grade
为10
的时候,没有break
,会往下一直执行;执行到grade
为9
的时候,有break
,会终止switch
语句块,此时 gpa
被赋值4
,所以90
到100
分的返回值都是4
。
编程要求
本关的编程任务是补全右侧代码片段中Begin
至End
中间的代码,具体要求如下:
-
根据面积参数
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 **********/
}