window.jQuery==true的计算结果为false,尽管window.jQuery=false计算结果为tru
window.jQuery==true evaluates to false, although window.jQuery!=false evaluates to true
这是我无法理解的事情。
据我所知,JavaScript具有truthy和falsy值:
错误的价值观:
0
false
未定义
空
NaN
"quot;(空字符串)
真诚的价值观:
任何不是伪值的东西
如果window.jQuery加载正确,那么它的计算结果不应该为false(或者更确切地说,undefined
)。以下条件将返回true
:
window.jQuery != false
但是,以下条件将返回false
:
window.jQuery == true
(我对所有这些都使用==
,而不是===
,否则window.jQuery将始终计算为false
,除非它实际上是一个包含值false
的布尔值)。
这里发生了什么?当然,如果一个条件的求值不为false
,那么它必须求值为true
?
jQuery
是一个函数,它不是== true
,所以你得到了false
,它是!= false
,所以你获得了true
。
我想你已经知道==
比较和布尔转换是一样的。事实并非如此。要进行布尔转换,可以执行Boolean(window.jQuery) == true
,得到true
。或者只是!!window.jQuery == true
。
当您转换为布尔值时,然后您可以在除false
、null
、undefined
、NaN
、""
和0
之外的所有情况下转换为true
。
最终,如果你想看看jQuery是否加载,那么你只需要做…
if (window.jQuery) {
它将为您执行布尔值转换。
在比较不同类型的值时,会隐式发生一些内部转换。假设正在使用jQuery,您将得到以下内容:
对于window.jQuery!=false:
- window.jQuery!=虚假的
- window.jQuery.toString()!=0
- "函数(e,t){return new x.fn.init(e,t,r)}"!=0
- 数字("函数(e,t){return new x.fn.init(e,t,r)}")!=0
- NaN!=0
- 真的
对于window.jQuery==true,会发生类似的情况:
- window.jQuery==true
- window.jQuery.toString()==1
- "函数(e,t){return new x.fn.init(e,t,r)}"==1
- 数字("函数(e,t){return new x.fn.init(e,t,r)}")==1
- NaN==1
- 虚假的
来源:http://javascriptweblog.wordpress.com/2011/02/07/truth-equality-and-javascript/
当您将值与true
或false
进行比较时,它不仅仅是比较它们的真实性。true
和false
是特定的值,就像不同的数字和字符串一样。仅仅因为两个值具有相同的真实性,并不意味着它们实际上比较相等。
如果您想比较两个值的真实性,可以通过将它们强制为布尔类型来实现。一个简单的方法是使用布尔反转:
if (!foo == !bar)
将判断CCD_ 30和CCD_。
如果您试图查看是否加载了jQuery。这会告诉你的。
if (jQuery) {
// jQuery is loaded
} else {
// jQuery is not loaded
}
查看此博客文章:
检查jQuery是否已加载
- 正在寻找比$(document).ready慢的$(window).load的替代方案
- 奇怪的Javascript结果
- 直接下载文件,而不是从window.open(url)
- Javascript(jQuery)给了我奇怪的结果
- $window.ga在AngularJS事件中未定义
- JSONP请求返回结果,但也触发error_callback
- 如何将PDF作为二进制文件传递到window.open()
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- window.onload没有'无法在Android WebView中工作
- Javascript,输出结果后页面不断刷新
- 这是使用html快照和谷歌获取的预期结果吗?SEO/SPA
- window.location替换并传递URL历史记录条目中的变量
- 无法理解$(window).width()的结果
- window.jQuery==true的计算结果为false,尽管window.jQuery=false计算结果为tru
- window.location没有'不会产生与将相同链接粘贴到浏览器相同的结果-Magento添加到购物车URL
- 如何从window.external.Notify("someText")的事件处理程序中获取结果,
- 为什么window.indexedDB的计算结果为undefined?(如何使用IndexedDB?)
- Jquery $(window).height()和$(document).height()返回相同的结果
- 捕获window.onbeforeunload的结果
- 是Window.getComputedStyle()始终更新的结果