什么时候在JavaScript中使用null或undefined?
这个问题在这里已经有了答案:
当调用不返回节点对象时,DOM方法getElementById() , nextSibling() , childNodes[n] , parentNode()等返回null (已定义但没有值)。
该属性已定义,但其引用的对象不存在。
这是为数不多的几次,你可能不希望测试equality-
if(x!==undefined)对于空值将为真
但是if(x!= undefined)对于没有undefined或null值的值将是真(仅)。
我发现其中一些答案含糊而复杂,我发现确定这些问题的最好方法就是打开控制台并自行测试。
var x;
x == null // true
x == undefined // true
x === null // false
x === undefined // true
var y = null;
y == null // true
y == undefined // true
y === null // true
y === undefined // false
typeof x // 'undefined'
typeof y // 'object'
var z = {abc: null};
z.abc == null // true
z.abc == undefined // true
z.abc === null // true
z.abc === undefined // false
z.xyz == null // true
z.xyz == undefined // true
z.xyz === null // false
z.xyz === undefined // true
null = 1; // throws error: invalid left hand assignment
undefined = 1; // works fine: this can cause some problems
所以这绝对是JavaScript中更细微的细微差别之一。 正如你所看到的,你可以覆盖undefined的值,与null相比,它有点不可靠。 使用==运算符,就我所知,可以可靠地使用null和undefined 。 但是,由于null无法重新定义的优点,因此在使用==时可能会使用它。
例如, variable != null将始终返回false如果variable是等于或者null或undefined ,而variable != undefined如果将返回false variable等于或者null或undefined ,除非undefined预先重新分配。
如果需要确保某个值实际上是undefined (而不是null ),则可以可靠地使用===运算符来区分undefined和null 。
根据ECMAScript 5规范:
Null和Undefined是六种内置类型中的两种。 4.3.9未定义值
当变量未被赋值时使用的原始值
4.3.11空值
表示故意不存在任何对象值的原始值
对于各种情况你会得到不确定的结果:
你用var声明一个变量,但从来没有设置它。
var foo;
alert(foo); //undefined.
您尝试访问您从未设置的对象的属性。
var foo = {};
alert(foo.bar); //undefined
您尝试访问从未提供的参数。
function myFunction (foo) {
alert(foo); //undefined.
}
正如cwolves在对另一个答案的评论中指出的那样,函数不会返回值。
function myFunction () {
}
alert(myFunction());//undefined
空值通常必须有意设置在变量或属性上(请参阅注释,以查看未设置的情况)。 另外,null是类型object ,undefined类型是undefined 。
我还应该注意,null在JSON中有效,但未定义不是:
JSON.parse(undefined); //syntax error
JSON.parse(null); //null
链接地址: http://www.djcxy.com/p/76643.html
上一篇: When is null or undefined used in JavaScript?
下一篇: How do I check whether an arbitrary object is 'None' or not?
