Javascript if(var.length>;0){}和if(var){}之间的差异

Javascript if(var.length>;0){}和if(var){}之间的差异,javascript,variables,Javascript,Variables,在javascript中,使用 if (foo.length > 0) { //run code involving foo } 及 如果是这样的话,请有人解释一下两者的区别,并举例说明它们不一样的地方吗?这两者是完全不同的。我通过使用.length假设var是一个jquery对象,在这种情况下if(var)将始终为真。jQuery将始终返回一个对象,但它可能是空的if(var.length>0)检查jquery对象是否实际包含一个元素。前一个测试var.length返回的值是否大于0。

在javascript中,使用

if (foo.length > 0) {
//run code involving foo
}


如果是这样的话,请有人解释一下两者的区别,并举例说明它们不一样的地方吗?

这两者是完全不同的。我通过使用
.length
假设
var
是一个jquery对象,在这种情况下
if(var)
将始终为真。jQuery将始终返回一个对象,但它可能是空的
if(var.length>0)
检查jquery对象是否实际包含一个元素。

前一个测试var.length返回的值是否大于0。后者测试var的值是否为真


不能对所有变量都使用其中一个。对于布尔型,if(var)更有意义。对于字符串或数组,if(var.length)更有意义。

这里有一个例子,它们不一样:

var x = [];
alert(x? 'yes' : 'no'); // displays "yes"
alert((x.length > 0)? 'yes' : 'no'); // displays "no"

他们显然不同,问题是他们为什么不同

第一个示例是明确检查对象的length属性是否大于0。如果这是真的,它将计算if语句的内容


第二个例子只能告诉你变量是“truthy”还是“falsy”(或者像伟大的斯蒂芬·科尔伯特(stephen colbert)所说的“truthyness”)。查看详细信息。

您是否打算比较
if(foo.length)
if(foo.length>0)
var x = [];
alert(x? 'yes' : 'no'); // displays "yes"
alert((x.length > 0)? 'yes' : 'no'); // displays "no"