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

时间:2011-06-18 04:19:44

标签: javascript variables

在javascript中使用

之间存在差异
if (foo.length > 0) {
//run code involving foo
}

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

如果是这样,有人可以解释一下这些差异以及它们不一样的例子吗?

4 个答案:

答案 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了解详细信息。