switch语句是否等于===或==?

dan*_*vic 1 javascript comparison switch-statement

Javascript switch语句是严格比较还是通过类型转换进行比较?

Bol*_*ock 9

它仅使用严格比较。特别是,即使没有找到严格匹配,它也永远不会回退到类型强制 \xe2\x80\x94 它会立即跳到默认子句(如果有)。来自MDN

\n\n
\n

程序首先查找case其表达式计算结果与输入表达式的值相同的子句(使用严格比较, ===),然后将控制权转移到该子句,执行关联的语句。如果没有case找到匹配的子句,程序将查找可选的default子句...

\n
\n


Gri*_*... 6

我不敢相信提出这个问题要比尝试这个问题更快:

var v = "1";

switch (v) {
    case 1:
        alert ("No");
        break;
    default:
        alert ("Yes");
}
Run Code Online (Sandbox Code Playgroud)

在回答你的问题时,就是这样===.

  • "只是尝试它"的问题是,在没有指定行为的情况下,您只测试特定的实现.在这种情况下,它看起来实际上是*指定*要使用严格的比较,但在另一种情况下,标准可能不那么清楚,甚至根本没有说什么,在这种情况下,如果你"冒险将自己挖进洞里"只是测试"然后假设所有实现都是相似的. (3认同)