美文网首页
你真的了解undefined吗?

你真的了解undefined吗?

作者: 踏莎行 | 来源:发表于2021-05-15 15:09 被阅读0次

    undefined既是一个基本数据类型也是一个原始值数据

    • 系统会给一个未赋值的变量赋值为undefined,返回的类型也是undefined
    var a;
    console.log(a); // 值undefined
    console.log(typeof a);  // 类型undefined
    
    • 调用一个有参数的函数但是不传参,这个参数也是undefined
    function test(a){
        console.log(a); // 值undefined
        console.log(typeof a); //  类型undefined
        return a // // 值undefined
    }
    console.log(test());
    
    • 函数内部没有显式return东西时,系统默认返回undefined
    function test(){
        var a = 9
    }
    console.log(test()); // undefined
    

    undefined还是全局window上的一个属性

    window.undefined.png
    • 这个属性是只读的,不可配置,不可枚举
    console.log(window.undefined); // undefined
                
    window.undefined = '123'
    console.log(window.undefined);
                
    for (let k in window) {
      if(k === undefined){
        console.log("访问到了");
       }
     }
    


    undefined.png
    • 不可重新定义
    Object.defineProperty(window, "undefined", {
        enumerable: true,
        writable: true,
        configurable: true
    })
    //直接报错
     Uncaught TypeError: Cannot redefine property: undefined
        at Function.defineProperty (<anonymous>)
        at test.html:9
    

    undefined可以做变量名吗??

    • 全局作用域下
    var undefined = 1
    console.log(undefined); // undefined
    console.log(window.undefined); // undefined
    
    • 局部作用域下
    function test(){
        var undefined = 1
        console.log(undefined); // 1
    }
    test()
    

    undefined在局部作用域可以作为变量,undefined不是关键字也不是保留字,上面也说了在全局下,undefined是只读的,所以在局部作用域中就可以使用,严格模式下仍然可以。但是开发中还是避免使用它做变量名

    判断类型

    如果要判断某个变量是否是undefined,必须使用“===”而不能使用“==”

    var a;
    if(a === undefined){
      console.log("执行了"); // 可以执行
      }
    
    var b;
    if(a == undefined){
      console.log("执行了"); // 可以执行
      }
    

    为的就是与null进行区分,当a = null时,a == undefined返回的结果就是true

    var a = null;
    if(a == undefined){
      console.log("执行了");
    }
    

    相关文章

      网友评论

          本文标题:你真的了解undefined吗?

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