什么时候在JavaScript中使用null或undefined?

这个问题在这里已经有了答案:

  • JavaScript中的null和undefined有什么区别? 30个答案

  • 当调用不返回节点对象时,DOM方法getElementById()nextSibling()childNodes[n]parentNode()等返回null (已定义但没有值)。

    属性已定义,但其引用的对象不存在。

    这是为数不多的几次,你可能希望测试equality-

    if(x!==undefined)对于空值将为真

    但是if(x!= undefined)对于没有undefinednull值的值将是真(仅)。


    我发现其中一些答案含糊而复杂,我发现确定这些问题的最好方法就是打开控制台并自行测试。

    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相比,它有点不可靠。 使用==运算符,就我所知,可以可靠地使用nullundefined 。 但是,由于null无法重新定义的优点,因此在使用==时可能会使用它。

    例如, variable != null将始终返回false如果variable是等于或者nullundefined ,而variable != undefined如果将返回false variable等于或者nullundefined ,除非undefined预先重新分配。

    如果需要确保某个值实际上是undefined (而不是null ),则可以可靠地使用===运算符来区分undefinednull

    根据ECMAScript 5规范:

  • NullUndefined是六种内置类型中的两种。
  • 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?