-2

检查天气元素是否存在我正在使用

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

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

我想如果长度为 0,那么它false就是0. 但是剩下的病例呢。我无法理解这里发生了什么。提前致谢...

4

4 回答 4

3

如果来自MDN

任何非 undefined、null、0、NaN 或空字符串 ("") 的值,以及任何对象,包括值为 false 的布尔对象,在传递给条件语句时计算结果为 true

这意味着当长度为1(或更大,但此选择器不会发生)时,它的计算结果为 true。

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

于 2013-04-19T08:06:28.437 回答
2

Here's some output from the chrome console, that might help you:

> 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

..hence, if length is 0 (as in; the element could not be found) then it does not evaluate to true and therefore chooses the } else { statement instead.

于 2013-04-19T08:08:51.543 回答
0

Javascript 有一个真/假的概念,其中像0, falseundefinednull等值被认为是假的,而其他值被认为是真值。

如果长度为0假,则条件失败,否则如果长度!= 0,则认为该值为真,条件成功。

于 2013-04-19T08:07:07.823 回答
-1

是的,这就是javascript的工作方式

这里有一个解释

在 JavaScript 中,为什么 "0" 等于 false,但是当通过 'if' 测试时,它本身不是 false?

于 2013-04-19T08:08:01.633 回答