有什么理由在JavaScript中使用null而不是undefined?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (24)

我已经写了很长一段时间了,我从来没有理由使用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以确定变量是否在以后被对象引用填充

扫码关注云+社区