如果条件确定其值,javascript如何?,请参阅此示例:
<script type="text/javascript">
var bar = ("something" == true);
alert(bar); // 1
if ("something") {
alert("hey!"); // 2
}
</script>
Run Code Online (Sandbox Code Playgroud)
为什么我指向// 2而// 1处的'bar'为假?
正如我所看到的,bar值的计算方式与if条件几乎相同,或者不是?
这是因为 javascript 类型强制引擎的工作方式。当你说
"something" == true
Run Code Online (Sandbox Code Playgroud)
javascript 对“something”字符串调用 ToNumber,将其与布尔值进行比较。“something”产生 NaN ,它不等于 true。
然而
if("something")
Run Code Online (Sandbox Code Playgroud)
只检查字符串是否为真。因为它不是空字符串,所以它实际上是真的。
更多信息请参见:http://webreflection.blogspot.co.il/2010/10/javascript-coercion-demystified.html