if (var.length > 0){} 和 if (var){} 的区别

9
在 JavaScript 中,使用以下两种方式是否有区别?
if (foo.length > 0) {
//run code involving foo
}

并且
if (foo) {
//run code involving foo
}

如果可以的话,有人能解释一下它们之间的区别并举一个它们不同的例子吗?

2
你是不是想比较 if (foo.length)if (foo.length > 0) - Chance Smith
4个回答

13

下面是一个它们不相同的示例:

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

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

1

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

并非所有变量都可以使用这两个方法。对于布尔值,if(var) 更合理。对于字符串或数组,if(var.length) 更合理。


0

它们显然是不同的,问题实际上只是为什么它们不同。

你的第一个例子明确检查对象的长度属性是否大于0。如果为真,则评估if语句的内容。

第二个例子只能告诉你变量是“真值”还是“假值”(或者正如伟大的斯蒂芬·科尔伯特所创造的,“真实性”)。请查看JavaScript布尔值的维基百科文章以获取详细信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接