美文网首页
019|什么是undefined?

019|什么是undefined?

作者: 中年小钢炮 | 来源:发表于2017-05-20 17:26 被阅读22次

    在前面的课程中,我们知道通过 var 关键字可以创建对象。像下面这样:

    var age = 18
    

    上面的代码,实际上将变量的定义与初始化放在一起做了。其中:

    • “var age” 是定义
    • “= 18” 是初始化

    在JavaScript, 定义与初始化是可以分开的。如:

    var age  // 定义
    age = 18 // 初始化
    

    那么问题来了,如果只有定义而没有初始化,会发生什么事情。我们通过下面代码模拟一下:

    var age
    console.log(age)
    

    我们看一下运行后的输出结果:

    输出结果为undefined

    我们看到,未初始化的变量var,输出的值为undefined。那么到底什么是undefined?

    undefined是全局对象的一个属性。也就是说,它是全局作用域的一个变量,指向基础数据类型(primitive type)undefined。
    所以undefined即是全局对象的一个属性,又是一个基础数据类型。要注意区分。

    全局对象由Node.js环境或浏览器环境提供。基础数据类型(primitive type)将在后面课程中介绍。

    在JavaScript中,所有已定义而未初始化的变量,都会被指向这个undefined变量。
    所以undefined变量的作用就是,用于判断程序中的变量是否已经初始化。

    例如,你要写一个函数,这个函数接收一个参数,参数是学生的名字,此函数需要根据打不同的招呼。代码如下:

    function sayHello(aName)
    {
        if (aName===undefined){ // 注意此处要用严格相等
            console.log("aName is "+aName); // aName未赋值,则输出aName本身
        }
        else{
            console.log("Hello "+aName); // aName已经赋值,则输出Hello
        }
    }
    
    var name
    sayHello(name)  // name未初始化,引用的是undefined.
    

    ==是相等符号, ===是严格相等符号。差别是,当比较的两个变量类型不一致时,===不会执行类型转换,而==会。

    null==undefined为true,而null===undefined为false。

    上面代码中,name未初始化,引用的是undefined。所以脚本运行后输出的结果如下:

    使用undefined

    可以看到,我们通过undefined来帮助我们解决了函数参数是否赋值的问题。

    好了,这一节就到这里。恭喜你!你掌握了一个面试高频题!想要学的更好,后面还有一段路要走。

    什么是null?
    什么是异常?

    请继续关注我的课程,我将在后续课程中为大家解答上述问题。

    想学计算机技术吗?需要1对1专业级导师指导吗?想要团队陪你一起进步吗?欢迎加我为好友!

    我的微信

    相关文章

      网友评论

          本文标题:019|什么是undefined?

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