019|什么是undefined?
在前面的课程中,我们知道通过 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专业级导师指导吗?想要团队陪你一起进步吗?欢迎加我为好友!
我的微信