第三章 基本概念
-
语句
这里对于switch的一个小补充吧~
switch ("hello world") {
case "hello" + " world":
alert("Greeting was found.");
break;
case "goodbye":
alert("Closing was found.");
break;
default:
alert("Unexpected message was found.");
}
以上会输出 Greeting was found
var num = 25;
switch (true) {
case num < 0:
alert("Less than 0.");
break;
case num >= 0 && num <= 10:
alert("Between 0 and 10.");
break;
case num > 10 && num <= 20:
alert("Between 10 and 20.");
break;
default:
alert("More than 20.");
}
以上会输出 More than 20
-
函数
对于参数的获取我们可以直接采用arguments的方式对参数进行判断
实现函数的假重载,文章后面解释了当然对于ECMAScript不能够做到真正的重载,因为不存在函数签名这种东西,而函数签名是指在编写函数语句的时候,编译器就会使用该调用创建一个函数签名。再把它与函数原型/或定义中可用的函数签名集比较。重载的具体解释可以看这里。https://www.cnblogs.com/Daringoo/p/4392514.html。如果找到匹配的函数名,就建立所调用的函数。但在实际的操作中相同的名字组成的函数会被覆盖。所以叫做假重载。
function doAdd() {
if(arguments.length == 1) {
alert(arguments[0] + 10);
} else if (arguments.length == 2) {
alert(arguments[0] + arguments[1]);
}
}
//20
console.log(doAdd(10))
//50
console.log(doAdd(30, 20))
这里需要注意的事arguments[1]之类的测试 虽然会和第二个参数的值产生同步,但他们的内存空间是独立的。