我正在编写一个单击按钮的功能。有很多不同的按钮,所以我想使用switch(true)
语句而不是一系列if...else if
语句。
有几个按钮用于编号,我将该编号放在value
标记的<button>
属性中。但是,测试这两个函数会产生不同的结果。
switch(true) {
case (Number(button.value)):
console.log('thats a number');
break;
default:
console.log('NaN');
break;
}
if(Number(button.value)) {
console.log('thats a number');
} else {
console.log('NaN');
}
有人可以解释一下原因吗?我已经进行了彻底的测试而没有到达任何地方,并且觉得在处理switch
和if
语句的方式上必须存在一些技术差异。
答案 0 :(得分:5)
switch
statement使用strict equality ===
检查给定条件,而if
采用转换为布尔值的值进行检查。
switch
中的内容是
true === Number(button.value)
并且该检查永远不会true