内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用
我已经写了很长一段时间了,我从来没有理由使用null
。看起来undefined
总是可取的,并以编程方式用于相同的目的。有什么实际的原因可以用来null
代替undefined
?
空和未定义实质上是两个不同的值,意味着相同的东西。唯一的区别是在约定的你如何使用它们的系统。正如一些人所提到的,有些人用null表示“无对象”,有时你可能会得到一个对象,而未定义意味着没有对象(或者有错误)。我的问题是它完全武断,完全没有必要。
也就是说,有一个主要区别 - 未初始化的变量(包括未传递参数的函数参数等)始终未定义。
这就是为什么在我的代码中,我从不使用null,除非我不控制返回null(例如正则表达式匹配)。它的美妙之处在于它可以模仿很多东西。我从来没有检查是否x === undefined || x === null。如果你习惯于使用==或者只是像if(x)...那样的东西。停下来。!x
将评估为空的字符串为0,null,NaN - 即你可能不想要的东西。如果你想写的JavaScript不是很糟糕,那么总是使用triple equals ===并且从不使用null(使用undefined代替)。它会让你的生活更轻松。
我没有真正的答案,但根据N. Zakas,p。30个用于Web开发人员的Javascript:
当定义一个变量以便稍后保存一个对象时,建议初始化该变量而
null
不是其他任何东西。这样,您可以显式检查该值,null
以确定变量是否在以后被对象引用填充