switch(true)与if(true)不返回相同(JavaScript)

时间:2018-01-30 15:37:31

标签: javascript switch-statement

我正在编写一个单击按钮的功能。有很多不同的按钮,所以我想使用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');
}

有人可以解释一下原因吗?我已经进行了彻底的测试而没有到达任何地方,并且觉得在处理switchif语句的方式上必须存在一些技术差异。

1 个答案:

答案 0 :(得分:5)

switch statement使用strict equality ===检查给定条件,而if采用转换为布尔值的值进行检查。

switch中的内容是

true === Number(button.value)

并且该检查永远不会true