Switch in JavaScript
by vitrumblog
偶然看到一篇讲GO语言中Select 和Switch的区别,觉得挺有趣,GO里Switch的用法也挺自由,一直以来以为javascript中Switch是用字符和数字来判断条件的,限制很多。
后经提醒,仔细看了一下规范 发现原来在javascript中也一样可以玩的飞起。
发现有下面的用法之前没有注意过:
1,判断变量为布尔值
var a = 100;
var b = NaN;
switch (true) {
case isNaN(a) || isNaN(b):
console.log('NaNNaN');
break;
case a === b:
console.log(0);
break;
case a < b:
console.log(-1);
break;
default:
console.log(1);
}
这样在case中就可以写条件了。
2,多个条件符合的判断
如果多个条件,都走相同的逻辑,以前用笨办法复制代码,显然是可以优化的,由于Switch是用break作为一个逻辑块的结束,那么想实现类似:
case "afshin", "saeed", "larry":
的方案,可以这么操作
switch (varName)
{
case "afshin":
case "saeed":
case "larry":
alert('Hey');
break;
default:
alert('Default case');
}
文档中更有花哨到不行的实例
var foo = 1;
var output = 'Output: ';
switch (foo) {
case 10:
output += 'So ';
case 1:
output += 'What ';
output += 'Is ';
case 2:
output += 'Your ';
case 3:
output += 'Name';
case 4:
output += '?';
console.log(output);
break;
case 5:
output += '!';
console.log(output);
break;
default:
console.log('Please pick a number from 0 to 6!');
}
Output from this example:
Value | Log text |
---|---|
foo is NaN or not 1, 2, 3, 4, 5 or 10 | Please pick a number from 0 to 6! |
10 | Output: So What Is Your Name? |
1 | Output: What Is Your Name? |
2 | Output: Your Name? |
3 | Output: Name? |
4 | Output: ? |
5 | Output: ! |
6到飞起啊~