代码很简单,先看这段
'0' == false; // true 0 == false; // true
再来看这段
'0' && console.log('打印出来了~'); // output:打印出来了~ 0 && console.log('打印出来了~'); // output:undefined
按道理说,都等同于false,那么为何字符串:'0'的情况下能打印数据呢?
false
0
认证高级PHP讲师
试一下把值 explicit 地转换为 Boolean,我们可以发现以下的结果:
Boolean
Boolean('0') // true Boolean(0) // false
由此可知,题主贴出的第二段代码是完全可以解释的。至于为什么会有这样的转换结果,参见标准第 9.2 节 对 String 到 Boolean 的转换的规定:
String
The result is false if the argument is the empty String (its length is zero); otherwise the result is true.
那么机智的题主要问了,第一段代码为何会说 '0' == false 为 true 呢?
'0' == false
true
这就要参考标准 11.9.3.7 对 == 的规定(此处 x 指代 == 左侧,y 指代右侧):
==
If Type(y) is Boolean, return the result of the comparison x == ToNumber(y).
试一下把值 explicit 地转换为
Boolean
,我们可以发现以下的结果:由此可知,题主贴出的第二段代码是完全可以解释的。至于为什么会有这样的转换结果,参见标准第 9.2 节 对
String
到Boolean
的转换的规定:那么机智的题主要问了,第一段代码为何会说
'0' == false
为true
呢?这就要参考标准 11.9.3.7 对
==
的规定(此处 x 指代==
左侧,y 指代右侧):