JS中case语句后面除了可以跟常数之外还可以跟什么
<html><body><script>vari=3varnow=newDate();varday=now.getDay();switch(i){caseday:aler...
<html>
<body>
<script>
var i=3
var now=new Date();
var day=now.getDay();
switch (i) {
case day: alert("3");
break;
case 30: alert("30");
break;
case 40: alert("40");
break;
default: alert("other");
}
</script>
</body>
</html>
</html>
我现在看的书中说case语句后面跟任意的常数表达式,可是我自己编了个上面的代码,case后面跟的是变量,照样能运行出正确的结果,求解释。
求高手透彻解释下switch case语法,谢了! 展开
<body>
<script>
var i=3
var now=new Date();
var day=now.getDay();
switch (i) {
case day: alert("3");
break;
case 30: alert("30");
break;
case 40: alert("40");
break;
default: alert("other");
}
</script>
</body>
</html>
</html>
我现在看的书中说case语句后面跟任意的常数表达式,可是我自己编了个上面的代码,case后面跟的是变量,照样能运行出正确的结果,求解释。
求高手透彻解释下switch case语法,谢了! 展开
2个回答
展开全部
关于switch的用法,其实也就是类似if else的另外一种用法而已
具体的运行逻辑就是,
首先计算switch后边括号里面的表达式,得出一个值,
然后在机选每个case后边的表达式,进行对比,如果相等,就执行case冒号后边的逻辑,否则就计算下一个case后边的表达式
如果计算的case里面包含了break语句,则会跳出switch的语句
如果switch里面包含default语句,则不管switch计算的值是否与case里面的值匹配,都会执行,除非遇到break语句跳出
case后边可以包含的语法就是一个正常的表达式,不一定是个常量,只要是正确的js表达式,都可以的
举个例子吧:
var id = 2;
var s = 1;
switch(id){//计算id的值
case 2://计算常量
alert('2 true');
case 1 + 1://计算数字相加
alert('1 + 1 true');
case 1 * 2://计算数字相乘
alert('1 * 2 true');
case s * 2://计算变量
alert('s * 2 true');
default : //默认执行
alert('default');
}
//具体的执行,就是这样
//1. 计算switch小括号里面的表达式,得出结果a
//2. 计算case后边的表达式,得出结果b
//3. 进行验证 a === b 如果相等,则执行case,否则跳过这个case,继续2步骤
//4. 强制中断switch语句可以用return , break这俩个关键字在case后边的执行语句里,
// 可以跳出switch的验证
//然后加上break语句
//这样,只要有一次可以匹配通过,就会跳出其他的判断条件和if else if else 差不多
switch(id){//计算id的值
case 2://计算常量
alert('2 true');
break;
case 1 + 1://计算数字相加
alert('1 + 1 true');
break;
case 1 * 2://计算数字相乘
alert('1 * 2 true');
return ;//return也可以中断switch的case,并且会将整个方法中断
case s * 2://计算变量
alert('s * 2 true');
break;
default : //默认执行
alert('default');
}
//一个简单的例子
function type(obj){
switch(typeof obj){
case 'string' :
return 'string';
case 'function':
return 'function';
case 'object':
return 'object';
case 'number':
return 'number';
}
}
alert(type('字符串'));
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询