jQuery 中 if(something.length) 的含义

Meaning of if(something.length) in jQuery

我正在在线解析一些平滑滚动代码(在 https://css-tricks.com/snippets/jquery/smooth-scrolling/)并找到行 if (target.length) {some stuff}.length 运算符 return 不是整数吗?这如何与 if() 语句一起使用,因为我认为它们只采用 true/false 值?相同的 target.length 在代码稍早的时候被用作三元语句的条件。

JavaScript returns 中的 if 语句对大于(或小于)0 的任何数字都为真,对 0 为假(除此之外还有更多规则我将没有提到这个问题)。因此在您的代码片段中

if (target.length) {some stuff}

如果 target 的长度不为零,将计算 some stuff。如果 target 的长度为零,可能表示它是空的,则 some stuff 内容将不会计算。

  1. 如果值不是同一类型,则将进行转换
  2. 在这种情况下,如果长度为 0(零)- "false" 值;任何不为 0(零)、低于和高于的值都被视为 "true"

你需要了解真实性的概念。 Mozilla's docs 是一个很好的资源,可以查看 javascript

中哪些值是真值或假值
if (target.length) {
  do something
}
else {
  goes here... 
}

这里假设长度大于或等于1, 口译员会将其视为 true... 否则它将是 false

同理,

如果您的目标是 1

您仍然可以使用

if (target) {
   do something ..
}
else {
   goes here ..
}

但这里如果目标是 2,它将继续到 2。

因为根据布尔逻辑 1 将被视为 true0 将被视为 false