问题描述
今天看到 书籍 undefined 和null 经过Boolean()转化之后是false,所以他们应该 ‘==’ false ,这是我粗俗的理解,可是今天console.log()一下发现他们既不是 ‘true’ 也不是 ‘false’ ?? 疑惑
今天看到 书籍 undefined 和null 经过Boolean()转化之后是false,所以他们应该 ‘==’ false ,这是我粗俗的理解,可是今天console.log()一下发现他们既不是 ‘true’ 也不是 ‘false’ ?? 疑惑
我的建议是看你怎么写 JavaScript:
如果是使用 ES 的话,我建议不要使用 undefined
,原因是 null
更短一点,而且比较符合其他语言对 null
的定义(例如:C#, Java 等)。
如果是使用 TypeScript 的话,那就不要使用 null
,原因是:
a?: string; // 相当于 string | undefined
undefined
与 null
本质上来说,是一种历史产物,不管哪一种,依然建议整个项目里始终保持只用一种的习惯。
当然,也免不了后端数据与前端类型的匹配,因此在使用前可以使用 v == null
来判断是否 null
或 undefined
。
最后,拿 null == undefined
来比较完全没有任何意义,只需要记住这是一个空的值就行,只是它有两种状态,但都是表示空的值而已。
当你不知道时,那就保持只使用一种,那就完事了。
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
找了半天帮你把这个文档找到了,可以看作“假值”的 8 种值:https://developer.mozilla.org...
undefined
和null
跟false
没有直接关系,用==
比较不会得到真值。但是,在上下文需要布尔值的时候(比如在
if
语句中),上述 8 种值会被看作“假”值,其他是真值。如果想把一个可以看作“假值”的值转换成
boolean
类型,可以使用!!
运算符,也就是两次取反。