当我在严格模式下使用`=`运算符时,javascript中会出现比较歧义,有人能告诉我';这是为什么?

当我在严格模式下使用`=`运算符时,javascript中会出现比较歧义,有人能告诉我';这是为什么?,javascript,comparison,strict,Javascript,Comparison,Strict,同样的手术会产生不同的结果,有人能告诉我为什么吗 "use strict" console.log(+0 === -0) // true +0 === -0 // false 执行结果: 这里没什么大不了的,您的代码被解释如下,因为没有分号 "use strict" +0 === -0 使用分号 "use strict"; +0 === -0 严格模式与比较无关。请看一下算法+0将始终等于-0 当涉及到您的案例时,您的代码将被解释为 "use strict" co

同样的手术会产生不同的结果,有人能告诉我为什么吗

"use strict"
console.log(+0 === -0) // true
+0 === -0              // false
执行结果:


这里没什么大不了的,您的代码被解释如下,因为没有分号

"use strict" +0 === -0
使用分号

"use strict";
+0 === -0
严格模式与比较无关。请看一下算法<代码>+0将始终等于
-0

当涉及到您的案例时,您的代码将被解释为

"use strict" console.log(+0 === -0) +0 === -0
那么这里发生了什么

  • 首先计算
    console.log()
    ,然后在控制台中打印
    true
  • 现在将对该部分
    未定义+0===-0
    进行评估
  • undefined+0
    NaN
    ,因此
    NaN===-0
    将是
    false

它被解释为
console.log(…)+0===…
,但是是的,同样的问题…