2015-02-10 66 views
0

是可以安全使用length属性,而不是==""为空字符串验证?使用长度而不是==“”可以安全吗?

它是不是在所有的布尔运算符有效?

这可能是一个很简单的问题,我敢肯定,答案是肯定的/是的,但我使用了很多最近,我有点担心任何可能的陷阱。

为了完整起见,这里是一个简单的例子

var valid = name.length && (foo.length||bar.length); 
+0

,因为空字符串是falsy值你可以使用'VAR有效= name'。 – shahkalpesh 2015-02-10 07:07:48

回答

3

它始终是安全使用.length如果您知道确保您有可变的东西,可以有属性(如字符串)。

但是,如果变量可能是undefinednull,然后.length将是无效的,你想要什么也不会做,name === ""会更安全。

许多JavaScript开发人员只需做:

if (name) { 
    // 
} 

此检查在name任何truthy值。因此,如果nameundefined,null或者甚至是一个空字符串"",并且在某些情况下保护您的代码比您所做的要多一点,那么if将不会被满足。


或者,在你的榜样,你或许只是做:

var valid = name && (foo || bar); 

这将需要name,要么foobar是truthy。这不会防止namefoobar是一些类型的数据,但不会像原始代码那样具有.length属性,但它可以更好地防止这些变量中的任何一个是undefinednull

记住一个空字符串""是falsey值,这样你就可以在布尔比较使用你的优势。

相关问题