ES5 | 当使用空以及何时使用未定义[复制](ES5 | When to use null a

2019-09-23 01:50发布

可能重复:
使用Javascript null或undefined

null是保留字,但不是关键字。
因此,它不能被覆盖。

undefined是一个内置的全球性,可以被覆盖。 这就是为什么你看到它的IIFE jQuery的重新定义。 只是为了确保它没有覆盖。

它的作为ES 5指明何时使用的技术区别。

我知道,我已经看到了浏览器的未创建的localStorage属性设置为null或undefined取决于浏览器。

localStorage.not_defined === null // sometimes

localStorage.not_defined === undefined // sometimes

如何ES 5指定在这种情况下和一般的使用情况如何?

ES5提供未澄清:

8.1类型未定义未定义类型具有一个值,被称为不确定。 尚未赋值的任何变量值为undefined。

8.2 Null类型类型都有一个值,称为空。

http://www.ecma-international.org/publications/standards/Ecma-262.htm

Answer 1:

这两个的区别是相当模糊,在规范不明确。

常识是: undefined是,从来没有被分配和非现有属性变量。

null然而是一个变量或属性,其指示它没有分配的值的状态。

像一些方法getElement...明确地返回null ,表明该结果集是空的。 如果你的函数没有return语句,隐含undefined而是返回。

在一般情况下,始终分配null ,从不undefined



Answer 2:

null是一个值。 东西的价值是零。

不确定的是缺乏价值。

这是它应该如何使用。

你永远不应该分配不确定的任何东西。 这违背了目的。 如果你想使你的现有属性未定义使用delete关键字。

在另一方面null是分配给变量的合法值。

jQuery的增加了一个不确定的变量,它的关闭,因为它是更容易测试比写的typeof一个===“未定义”未定义一个===。



文章来源: ES5 | When to use null and when to use undefined [duplicate]