if条件如何在javascript中计算其值
how does if condition evaluates its value in javascript
javascript if condition如何确定其值?,参见此示例:
<script type="text/javascript">
var bar = ("something" == true);
alert(bar); // 1
if ("something") {
alert("hey!"); // 2
}
</script>
为什么我到达//2点,而//1的"bar"是假的?
正如我所看到的,bar
值的计算方式与if条件几乎相同,或者不是?
"something" == true
为false,因为必须将字符串和布尔值强制转换为可以比较的类型。然而,if("something")
之所以有效,是因为非空字符串是一个真实值。
这是因为javascript类型强制引擎的工作方式。当你说
"something" == true
javascript对"something"字符串调用ToNumber,将其与布尔值进行比较。"某物"产生的NaN不等于真。
然而
if("something")
只检查字符串是否正确。因为这不是一根空绳子,它实际上是真实的。
更多信息:http://webreflection.blogspot.co.il/2010/10/javascript-coercion-demystified.html
这是因为在第一种情况下,JavaScript将尝试将它们作为字符串(lit."something" == "true"
)进行比较,这将是错误的。
然而,在第二个条件中,表达式的结果是"something"
,当转换为布尔值时,它是true
。
有关详细信息,请参阅此处
if("something")
上面的声明将返回true
,因为"something"
是一个有效的字符串。如果它是一个空字符串(""
),它将返回false
。数字也会发生这种情况(0
返回false
,但1
返回true
)。
在"something"==true
中,两者都被转换为字符串,然后进行检查("something"=="true",将返回false
)。
非空字符串是真的,尽管它不等于真。如果您尝试返回true
的"something != false
,则可以检查此项。
正因为如此,很多人主张在JavaScript中进行严格的比较,以避免这些陷阱。
例如:
"something" !== false // true
"something" === true // false
"" === false // false
0 === false // false
要了解这一点,有很多文章。我推荐道格拉斯·克罗克福德。
- 从JSON数组计算javascript中的日期差异
- 计算JavaScript中的时间差异(天+小时+分钟+秒)
- 计算 JavaScript 中数组中元素的出现次数
- 计算JavaScript中句子(数组)中字符(数组)的出现次数
- 计算javascript对象中的出现次数
- 计算 JavaScript 的问题
- 简单计算 - JavaScript
- 计算 Javascript 数组索引的出现次数
- 计算 JavaScript 数组中对象的出现次数
- 很难计算Javascript的总数
- 计算 JavaScript 中数组中元素的频率
- 计算 javascript 中的 http 请求数
- 用于计算 JavaScript 中字符串的正则表达式
- 计算 JavaScript 中以 ISO 8859-7 编码的文件的字节大小
- 借助firebug或IE 8调试器或chrome调试器来计算javascript函数流的方法
- 如何计算javascript中登录尝试的最大次数
- 如何计算javascript html字符串变量中的行数
- 使用Date对象计算Javascript执行速度是否正确
- 计算JavaScript对象中属性百分比的变化
- 如何计算Javascript中字符串之间的时差?