【发布时间】:2020-07-17 02:12:45
【问题描述】:
为什么javascript有null和undefined?它们似乎都意味着同一件事,there's nothing here 并且它们都是虚假的,因为它们应该是。但这意味着,例如,如果我想检查是否存在某些东西,但它可能是 {}、[]、0 或其他一些我必须检查的虚假内容
if(thing !== undefined && thing !== null)
另外,我知道typeof null 是Object 但typeof {} 也是Object 而typeof undefined 是"undefined" 但是
const nullVariable = null;
console.log(nullVariable.x) // => error
const emptyVariable = {};
console.log(emptyVariable.x) // => undefined
const undefinedVariable;
console.log(undefinedVariable.x) // => error
另外,undefined 应该是表示该变量还没有被声明,但是你可以声明一个变量像
const undefinedVariable = undefined;
所以已经定义了但是还没有定义?
所以我的意思是,虽然它们有不同的语义含义,一个表示尚未声明的变量,而 on 表示没有值的变量,它们似乎具有功能并且它们都是错误的,试图得到它们的属性将返回错误。
基本上我要问的是为什么我们需要两者,为什么不只使用带有None 的python 或带有Null 的Java 和c++ 等低级语言?
【问题讨论】:
-
不是真的,它们是两个完全不同的东西。
-
@ggorlen 旨在显示
typeof null是Object是多么不直观,但您无法从中访问属性,就像您无法访问未定义的属性一样,我可以看看你有多困惑,所以我会编辑问题。 -
啊,我明白你的意思了。显然对此的解释是here。
-
副本中也提到了这一点...
标签: javascript