是可以安全使用length
属性,而不是==""
为空字符串验证?使用长度而不是==“”可以安全吗?
它是不是在所有的布尔运算符有效?
这可能是一个很简单的问题,我敢肯定,答案是肯定的/是的,但我使用了很多最近,我有点担心任何可能的陷阱。
为了完整起见,这里是一个简单的例子
var valid = name.length && (foo.length||bar.length);
是可以安全使用length
属性,而不是==""
为空字符串验证?使用长度而不是==“”可以安全吗?
它是不是在所有的布尔运算符有效?
这可能是一个很简单的问题,我敢肯定,答案是肯定的/是的,但我使用了很多最近,我有点担心任何可能的陷阱。
为了完整起见,这里是一个简单的例子
var valid = name.length && (foo.length||bar.length);
它始终是安全使用.length
如果您知道确保您有可变的东西,可以有属性(如字符串)。
但是,如果变量可能是undefined
或null
,然后.length
将是无效的,你想要什么也不会做,name === ""
会更安全。
许多JavaScript开发人员只需做:
if (name) {
//
}
此检查在name
任何truthy值。因此,如果name
是undefined
,null
或者甚至是一个空字符串""
,并且在某些情况下保护您的代码比您所做的要多一点,那么if
将不会被满足。
或者,在你的榜样,你或许只是做:
var valid = name && (foo || bar);
这将需要name
,要么foo
或bar
是truthy。这不会防止name
,foo
或bar
是一些类型的数据,但不会像原始代码那样具有.length
属性,但它可以更好地防止这些变量中的任何一个是undefined
或null
。
记住一个空字符串""
是falsey值,这样你就可以在布尔比较使用你的优势。
,因为空字符串是falsy值你可以使用'VAR有效= name'。 – shahkalpesh 2015-02-10 07:07:48