什么时候在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?