参考信息:https://www.runoob.com/js/js-hoisting.html
对变量提升的解释:
关键字:变量(或者函数)、声明、提升,这是三个部分,表示把(所有)变量(函数)的声明操作提升到了执行操作的前面(以上信息限定在当前作用域内)。
变量声明与函数声明:
变量声明的时候仅仅是声明,只是表示它存在,后续代码执行可以对它进行任意操作,包括赋值。当一个函数被声明时,不光是声明了函数(名称),此时该函数也被赋予了函数体,所以我们将一个function fn1(){}写在后面,而将函数执行fn1()写在前面可以执行,这是一个函数的声明提升。
(下图第一行红字,如果不声明,该变量为全局变量,如果先使用,并在下方声明,该变量则为局部变量)
image
当引用了一个js文件时,先提升所有的变量声明,然后才开始从第一行代码开始执行。举例证明变量提升的存在
//a.js文件
console.log(x)
//这样就会在控制台抛出错误,因为变量x即未声明(var x),
//也未使用(x=1),所以直接使console调用就会抛出错误
//b.js文件
console.log(x)
var x
//这样在控制台不会抛错,但是打印出来的是undefined,因为打印的时候还未赋值
网友评论