undefined与null

问题描述

今天看到 书籍 undefined 和null 经过Boolean()转化之后是false,所以他们应该 ‘==’ false ,这是我粗俗的理解,可是今天console.log()一下发现他们既不是 ‘true’ 也不是 ‘false’ ?? 疑惑

问题图片

阅读 3.4k
4 个回答

找了半天帮你把这个文档找到了,可以看作“假值”的 8 种值:https://developer.mozilla.org...

undefinednullfalse 没有直接关系,用 == 比较不会得到真值。

但是,在上下文需要布尔值的时候(比如在 if 语句中),上述 8 种值会被看作“假”值,其他是真值。

如果想把一个可以看作“假值”的值转换成 boolean 类型,可以使用 !! 运算符,也就是两次取反。

null == undefined true是特殊情况

我的建议是看你怎么写 JavaScript:
如果是使用 ES 的话,我建议不要使用 undefined,原因是 null 更短一点,而且比较符合其他语言对 null 的定义(例如:C#, Java 等)。

如果是使用 TypeScript 的话,那就不要使用 null,原因是:

a?: string; // 相当于 string | undefined

undefinednull 本质上来说,是一种历史产物,不管哪一种,依然建议整个项目里始终保持只用一种的习惯。

当然,也免不了后端数据与前端类型的匹配,因此在使用前可以使用 v == null 来判断是否 nullundefined

最后,拿 null == undefined 来比较完全没有任何意义,只需要记住这是一个空的值就行,只是它有两种状态,但都是表示空的值而已。

当你不知道时,那就保持只使用一种,那就完事了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题