为什么 Lodash 中的 isNil 方法使用 null 而不是 undefined?

30

Lodash中的isNil方法为什么使用null而不是undefined

function isNil(value) {
  return value == null;
}
2个回答

30

在逻辑上使用nullundefined没有任何区别,因为null == undefined == true,但是使用null而不是undefined可以减小文件大小5个字节。

这只是为了节省一些字节,使文件更小、从服务器下载更快


3
此外,这可能会有用:https://dev59.com/aW445IYBdhLWcg3wBVzz - Deepak Kamat

15
为了更好地理解这一点,需要注意lodash在此处使用的是==而不是===
以以下示例为例:
console.log(null == undefined);    // true
console.log(null === undefined);   // false

通过使用 ==(双等号),lodash 使用了类型转换,其中nullundefined会被转换为falsy值。因此,null == undefinedtrue

然而,如果使用===(三个等号),则不强制执行强制转换,这意味着类型必须完全相同,我们知道nullundefined不完全相同。因此,null === undefinedfalse


1
似乎 _.isNil 的主要价值在于避免让像我这样无法记住这些强制转换规则微妙差别的人困惑。如果在代码审查中看到 _.isNil,则看起来很好,但如果看到 == 而不是 === 则会引起警觉。 - Glenn Lawrence

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接