【发布时间】:2013-09-03 11:05:34
【问题描述】:
这是我无法理解的事情。
据我了解,JavaScript 具有 truthy 和 falsy 值:
假值:
0
假
未定义
空
钠
"" (空字符串)
真实值:
任何不是虚假值的东西
如果 window.jQuery 已正确加载,则它不应评估为 false(或者更确切地说,undefined)。以下条件将返回 true:
window.jQuery != false
但是,以下条件将返回 false:
window.jQuery == true
(我对所有这些都使用==,而不是===,否则window.jQuery 将始终评估为false,除非它实际上是一个包含值false 的布尔值)。
这里发生了什么?当然,如果条件不计算为false,那么它必须计算为true?
【问题讨论】:
-
因为您最终将字符串与数字进行比较。见ecma-international.org/ecma-262/5.1/#sec-11.9.3
-
JavaScript 确实有真值和假值,但您在这里期望的是两个不同的真值(
jQuery和true)相互比较。这完全是另一回事。 -
5是真的,10是真的,但你不会指望5 == 10是真的,对吧? -
!(window.jQuery == true) 与 window.jQuery != false 不同。这是两种不同的表达方式。
标签: javascript