美文网首页
JS-数据类型-null/undefined

JS-数据类型-null/undefined

作者: chrisghb | 来源:发表于2019-06-13 21:18 被阅读0次

    参考文章:null 和 undefined

    • null类型只有一个值就是nullundefined类型只有一个值,就是undefined。它们的名称既是类型也是值。
    • null表示一个空的对象引用,表示该处的值现在为空,而这也正是typeof操作符检测null时候,返回object的原因。

      nullobject类型,但不是object的实例,用instanceoffalse
      因为Object.prototype的原型(__proto__)指向null

      undefined表示未定义,它是undefined类型;
    • nullundefined没有toString方法。所以nullundefined和其他数据比较都是false
    • 如果定义的变量准备将来用来保存对象,那么最好将该变量初始化为null而不是其他值。这样一来,只要直接检测null值就知道相应的变量是否已经保存了一个对象的引用:
    if(car != null){
        //car保存了一个对象的引用,就可以对car变量指向的对象进行操作
    }
    
    • 如果一个变量未定义,或者变量定义了但未赋值,则是undefined。无论在什么情况下都没有必要把一个变量的值显示地设置为undefined

      注意:变量未赋值与未定义的变量是不一样的,看下面的例子。
    var message;
    //var age;
    console.log(message);//"undefined"
    console.log(age);//Uncaught ReferenceError: age is not defined
    

    对于尚未声明过的变量,只能执行一项操作typeof。对未声明的变量执行typeof操作符同样也会返回undefined值。

    var message;
    //var age;
    console.log(typeof message);//"undefined"
    console.log(typeof age);//"undefined"
    
    • NumberStringBoolean如果不作为构造函数调用(即调用时不加new),常常用于将任意类型的值转为数值、字符串和布尔值。
    Boolean(undefined) //false
    Number(undefined): //NaN
    String(undefined): //"undefined"
    
    Boolean(null) //false
    Number(null): //0
    String(null): //"null"
    
    • 下面是返回undefined的典型场景:
    // 变量声明了,但没有赋值
    var i;
    i // undefined
    
    // 调用函数时,应该提供的参数没有提供,该参数等于 undefined
    function f(x) {
      return x;
    }
    f() // undefined
    
    // 对象没有赋值的属性
    var  o = new Object();
    o.p // undefined
    
    // 函数没有返回值时,默认返回 undefined
    function f() {}
    f() // undefined
    
    • if语句中,它们都会被自动转为false

      undefined派生null,所以相等运算符(==)两者相等。但严格相等运算符(===)两者不等。

    注意:(==)用于比较判断两者相等,它在比较的时候可以自动转换数据类型。(===)用于严格比较判断两者严格相等,不会进行自动转换,要求进行比较的操作数必须类型一致。

    if (!undefined) {
      console.log('undefined is false');
    }
    // undefined is false
    
    if (!null) {
      console.log('null is false');
    }
    // null is false
    
    undefined == null
    // true
    

    相关文章

      网友评论

          本文标题:JS-数据类型-null/undefined

          本文链接:https://www.haomeiwen.com/subject/ixiefctx.html