如果条件在javascript中评估其值,该怎么做?

Jai*_*zel 5 javascript

如果条件确定其值,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条件几乎相同,或者不是?

jus*_*mer 2

这是因为 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