无法理解这个功能的工作

时间:2013-04-19 08:04:42

标签: jquery

要查看天气,元素是否存在我正在使用

   if($('#id').length)
       //statement 1
   else
      //statement 2

这对我来说很好。但是当条件为真时,statement1将执行,否则将执行statement2。但是当长度返回长度时它是如何工作的(它是一个数字,如1,2 ......)

我认为如果长度为0,则false0。但剩下的情况又如何呢?我无法理解这里发生了什么。提前谢谢......

4 个答案:

答案 0 :(得分:3)

来自the MDN on if

  

任何不是的价值   undefined,null,0,NaN或空字符串(“”)以及任何对象,   包括一个值为false的Boolean对象,计算结果为true   传递给条件语句时

这意味着当长度为1(或者更高但是对于此选择器不会发生)时,它的计算结果为真。

因此,当找到标识为id的元素时,将执行statement 1。当长度为0时,则执行statement 2

答案 1 :(得分:2)

以下是Chrome控制台的一些输出,可能会对您有所帮助:

> Boolean(1) //The number 1
true

> Boolean(0) //The number 0
false

> Boolean(0.0000000000000000000000000000000000000000001) //A very close to 0 float
true

> Boolean(0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001) //This is where it starts rounding down to zero
false

> Boolean(false) //A boolean "false"
false

> Boolean(NaN) //Not a number
false

> Boolean(undefined) //Undefined
false

> Boolean("") //An empty string
false

> Boolean(-3) //A negative number
true

> Boolean("string") //A string that is not empty
true

> Boolean([]) //An empty array
true

> Boolean({}) //An empty object
true

> Boolean(2.5) //A float
true

..因此,如果length为0(如:无法找到元素),那么它不会计算为true,因此会选择} else {语句。

答案 2 :(得分:0)

Javascript的概念为truthy/falsy,其中0,false,undefinednull等值被认为是假的,而其他值则被认为是真实的。

如果长度为0则会变为假,且条件会失败,否则如果长度为!= 0则该值被认为是真实的,条件将成功。

答案 3 :(得分:-1)

是的,这就是javascript的工作原理

这里的解释

In JavaScript, why is "0" equal to false, but when tested by 'if' it is not false by itself?