是可以安全使用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