window.jQuery==true的计算结果为false,尽管window.jQuery=false计算结果为tru

window.jQuery==true evaluates to false, although window.jQuery!=false evaluates to true

本文关键字:结果 window false 计算 jQuery tru 尽管 true      更新时间:2023-09-26

这是我无法理解的事情。

据我所知,JavaScript具有truthyfalsy值:

错误的价值观:

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

当您转换为布尔值时,然后您可以在除falsenullundefinedNaN""0之外的所有情况下转换为true

最终,如果你想看看jQuery是否加载,那么你只需要做…

if (window.jQuery) {

它将为您执行布尔值转换。

在比较不同类型的值时,会隐式发生一些内部转换。假设正在使用jQuery,您将得到以下内容:

对于window.jQuery!=false:

  1. window.jQuery!=虚假的
  2. window.jQuery.toString()!=0
  3. "函数(e,t){return new x.fn.init(e,t,r)}"!=0
  4. 数字("函数(e,t){return new x.fn.init(e,t,r)}")!=0
  5. NaN!=0
  6. 真的

对于window.jQuery==true,会发生类似的情况:

  1. window.jQuery==true
  2. window.jQuery.toString()==1
  3. "函数(e,t){return new x.fn.init(e,t,r)}"==1
  4. 数字("函数(e,t){return new x.fn.init(e,t,r)}")==1
  5. NaN==1
  6. 虚假的

来源:http://javascriptweblog.wordpress.com/2011/02/07/truth-equality-and-javascript/

当您将值与truefalse进行比较时,它不仅仅是比较它们的真实性。truefalse是特定的值,就像不同的数字和字符串一样。仅仅因为两个值具有相同的真实性,并不意味着它们实际上比较相等。

如果您想比较两个值的真实性,可以通过将它们强制为布尔类型来实现。一个简单的方法是使用布尔反转:

if (!foo == !bar)

将判断CCD_ 30和CCD_。

如果您试图查看是否加载了jQuery。这会告诉你的。

if (jQuery) {  
    // jQuery is loaded  
} else {
    // jQuery is not loaded
}

查看此博客文章:

检查jQuery是否已加载