if条件如何在javascript中计算其值
javascript if条件如何确定其值?请参见以下示例:if条件如何在javascript中计算其值,javascript,Javascript,javascript if条件如何确定其值?请参见以下示例: <script type="text/javascript"> var bar = ("something" == true); alert(bar); // 1 if ("something") { alert("hey!"); // 2 } </script> 变量条=(“某物”==true); 警告(条);//1. 如果(“某物”){ 警惕(“嘿!”);//2 } 为什么我到达点//2
<script type="text/javascript">
var bar = ("something" == true);
alert(bar); // 1
if ("something") {
alert("hey!"); // 2
}
</script>
变量条=(“某物”==true);
警告(条);//1.
如果(“某物”){
警惕(“嘿!”);//2
}
为什么我到达点//2,而//1处的“bar”为false
正如我所看到的,
bar
值的计算方式几乎与if条件相同,或者与if条件不同?“something”==true
为false,因为必须将字符串和布尔值强制为可比较的类型。但是,if(“something”)
之所以有效,是因为非空字符串是真实值。这是因为在第一种情况下,JavaScript将尝试将它们作为字符串进行比较(lit.“something”==“true”
),这将是错误的
但是,在第二个条件中,表达式的结果是“something”
,当转换为布尔值时,它是true
这是因为javascript类型强制引擎的工作方式。当你说
"something" == true
javascript调用“something”字符串上的ToNumber将其与布尔值进行比较。“某物”产生不等于真的NaN
然而
if("something")
仅检查字符串是否真实。因为它不是一个空字符串,它实际上是真实的
详情如下:
上面的声明将返回true
,因为“something”
是有效字符串。如果它是空字符串(“
”),它将返回false
。数字也会出现这种情况(0
返回false
,但1
返回true
)
在
“something”==true
,两者都被转换为字符串,然后被选中(“something”==true”,它将返回false
)。问题不在于javascript如何处理if语句,而在于javascript如何强制对象类型
非空字符串是真实的,尽管它不等于真。如果您尝试“something!=false
,返回true
,则可以检查此项
因此,许多人主张在JavaScript中进行严格的比较,以避免这些陷阱
例如:
"something" !== false // true
"something" === true // false
"" === false // false
0 === false // false
要了解这一点,有很多文章。我建议。这里的问题可能是
==
对==
的不可预测性。啊…在查看真相表之后,可能会重复…我想我会一直尝试使用==
但是真的“==true
的计算结果也是false
。如果它只是作为字符串进行比较(如您所指出的),那么这应该是true
。现在我很困惑,“something”==false
和“something”==true
都是假的,为什么?因为当=
尝试进行类型强制时,true
,false
,而“某物”
总是以不同的值出现。在这种情况下并不奇怪,考虑到'something'
无论如何都不是布尔值(因此比较它们没有意义)。再次阅读,它说(“something”!=false)
和(“something”==false)
"something" !== false // true
"something" === true // false
"" === false // false
0 === false // false