019|什么是undefined?

2017-05-20  本文已影响22人  中年小钢炮

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

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专业级导师指导吗?想要团队陪你一起进步吗?欢迎加我为好友!

我的微信
上一篇下一篇

猜你喜欢

热点阅读