2015-02-10 67 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值,這樣你就可以在布爾比較使用你的優勢。

相關問題