2014-09-30 95 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值。在你的空比较的情况下,这将是一个错误。

相关问题