2014-09-30 94 views
0

Underscore.js有兩種方法_.isNull_.isUndefined,我們在代碼中使用了很多方法,並且我們還爲_.isUndefinedOrNull創建了混合。使用JavaScript的「真實性」是不好的做法嗎?

我最近意識到,我可以很容易地使用javascripts「真實性」來獲得大部分時間的相同結果,所以問題在於,是否被認爲是不好的做法?

有什麼更好?

if(someVariable){...} 

if(_.isNull(someVariable) || _.isUndefined(someVariable){...} 
+0

它們不等同,所以沒有更好的... – 2014-09-30 12:14:12

+0

'if(someVariable == null)'是你正在尋找的東西。 – Bergi 2014-09-30 12:15:57

回答

3

他們倆是完全不同的。

if (someVariable) 

將評估爲falsy,如果someVariable0false。所以最好在這種情況下進行明確的檢查。您可能想要查看this answer中的真值表,它顯示變量何時將被評估爲真或假。

1

最近,我意識到,我可以很容易地使用JavaScript的「感實性」來達到同樣的結果大部分時間

如果只有大部分的時間,那麼你的解決方案不起作用。改用if (someVariable == null)來測試undefined或null。

所以問題是,這被認爲是不好的做法?

不一定。如果您知道您想要測試的someVariable以外的所有可能值都是真實的(例如對象),那麼它很好。

如果它們可以是原始值,它通常是一個錯誤,除了你的條件明確地想要測試相應類型的falsy值。在你的空比較的情況下,這將是一個錯誤。

相關問題