在javascript中使用
之间存在差异if (foo.length > 0) {
//run code involving foo
}
和
if (foo) {
//run code involving foo
}
如果是这样,有人可以解释一下这些差异以及它们不一样的例子吗?
答案 0 :(得分:11)
以下是一个不一样的例子:
var x = [];
alert(x? 'yes' : 'no'); // displays "yes"
alert((x.length > 0)? 'yes' : 'no'); // displays "no"
答案 1 :(得分:1)
两者完全不同。我假设使用.length
var
是一个jquery对象,在这种情况下if(var)
将永远为真。 jQuery将始终返回一个对象,但它可能是空的。 if(var.length>0)
检查jquery对象实际上是否包含元素。
答案 2 :(得分:0)
前者测试var.length是否返回大于0.后者测试var的值是否为真。
对于所有变量,您不一定要使用任何一个。对于布尔值,if(var)更有意义。对于字符串或数组,如果(var.length)更有意义。
答案 3 :(得分:0)
他们显然是不同的,问题实际上就是为什么他们不同。
你的第一个例子是显式地检查对象的length属性是否大于0.如果是,则它会计算if语句的内容。
第二个例子只能告诉你变量是'truthy'还是'falsy'(或者像伟大的斯蒂芬科尔伯特创造的那样,'真实性')。查看wikipedia article on javascript booleans了解详细信息。