ES5 | 何时使用null以及何时使用undefined

2 javascript ecmascript-5

可能重复:
Javascript null或undefined

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

undefined是一个内置的全局,可以覆盖.这就是为什么你看到jQuery在其IIFE中重新定义它的原因.只是为了确保它没有被覆盖.

什么时候使用ES 5中指定的技术区别是什么.

我知道我已经看到浏览器根据浏览器将未创建的localStorage属性设置为null或undefined.

localStorage.not_defined === null // sometimes

localStorage.not_defined === undefined // sometimes
Run Code Online (Sandbox Code Playgroud)

在这种情况下,ES 5如何指定它们的用法?

ES5未作澄清:

8.1未定义类型未定义类型只有一个值,称为undefined.未分配值的任何变量都具有未定义的值.

8.2 Null类型Null类型只有一个值,称为null.

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

Chr*_*oph 5

这两者的区别相当含糊,在规范中没有明确.

常识如下:undefined是从未分配的变量和不存在的属性.

null 但是,它是一个变量或属性的状态,表示它没有赋值.

某些方法(如getElement...explicitely返回)null表示结果集为空.如果您的函数没有return语句,undefined则返回含义.

一般来说,总是分配null,永远不会undefined.