Boolan(!x)和布尔值(x == 0)之间的区别?

Šim*_*das 2 javascript

代码片段1:

if ( !x ) { /* do stuff */ }
Run Code Online (Sandbox Code Playgroud)

代码片段2:

if ( x == 0 ) { /* do stuff */ }
Run Code Online (Sandbox Code Playgroud)

x这两个代码片段的价值有何不同?

我问,因为虽然我读了==规范中的章节,但我仍然觉得很难处理上面的情况(它与ToBoolean强制相结合).

顺便说一句,我想知道这只是为了了解它(我想理解语言),所以不要打扰告诉我===或者问我是什么x.

更新:我纠正了第一个片段.我的意思是!x.

SLa*_*aks 5

  • [] == 0是真的; ![]是假的
  • null == 0是假的; !null是真的
  • NaN == 0是假的; !NaN是真的
  • undefined == 0是假的; !undefined是真的

!x将检查是否x是"麻痹".
x == 0将检查是否x"等同于" 0.

这两个术语都是由Javascript规范定义的.