1.62页 SwitchStatementExample04.html
<!DOCTYPE html>
<html>
<head>
<title>Switch Statement Example 4</title>
<script type="text/javascript">
var num = 25;
switch (num) {
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;
case "25":
alert("the str of 25 is matched!")
break;
case 25://类似C语言完全匹配
alert("25");
break;
default: //默认匹配
alert("More than 20.");
}
</script>
</head>
<body>
</body>
</html>
可能大家认为一般的字符串会自动toString()方法,就会出现“25”==25----》true的情况,在switch也是像是C语言一样完全匹配吗?
<!DOCTYPE html>
<html>
<head>
<title>Switch Statement Example 4</title>
<script type="text/javascript">
var num = "25";
switch (num) {
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;
case "25":
alert("the str of 25 is matched!");//执行后直接执行25,难道是“25”==25,当然没有,是因为匹配了“25”,之后的就不匹配了
//js中switch还是完全匹配,不信去掉这个分支,真的很扫兴
case 25:
alert("25");
break;
default:
alert("More than 20.");
}
</script>
</head>
<body>
</body>
</html>
82页 重写arguments对象的成员(这么说感觉怪怪的)
function doAdd(num1,num2){
arguments[1] = 10;
alert(arguments[0]+num2);//30
}
doAdd(20,20);
开始的只是觉得没用过,敲了以后觉得自己真的没有理解到这一层含义。strict模型下 arguments对象的成员和参数是完全变量副本,类似变量;而非strict则是指向相同的地址引用
function doAdd(num1,num2){
//"use strict"
alert(arguments[1]==num2);
arguments[1] = 10;//arguments[1]真的改变了
alert(arguments[1]==num2);
alert(arguments[0]+num2);
}
doAdd(20,20);
当strict模式下arguments[1]!=num2(第二个),非strict模式,第二个arguments[1]!=num2,相同地址引用
PS:csdn的编辑板万不得以不要使用Ctrl+Z,这个容易出现问题,被这个坑了几次,希望论坛博主改正啊!