为什么会变量提升
js和其他语言不太一样,其他部分语言会要求你先声明变量,再使用,否则会报错,这是正常的逻辑思维,如下
// 先声明函数
function getName(name){
console.log("我的名字"+name)
}
getName('薛之谦')
而我们的javaScript不同,你可以先使用再去声明,例如
getName('薛之谦')
// 后声明函数
function getName(name){
console.log("我的名字"+name)
}
原因呢其实就是,js在执行代码之前会有一个预编译的过程,预编译的过程会把代码中的声明进行提升
需要注意的一点是,只有声明会被提升,初始化不会被提升
变量提升示例
接下来通过几道题来展开说明 1.
console.log(myname)
var myname = '钱钱'
输出:undefined
变量提升后的代码
var myname
console.log(myname) // undefined
myname = '钱钱'
2.函数声明提升优先于变量声明
console.log(aaa)
var aaa = 'name'
funcion aaa(){
console.log('bbb')
}
输出 function aaa 这种情况会优先处理函数声明,如果变量名称和已经声明的函数相同,那么变量声明不会替换之前的函数