- 函数提升优先于变量提升,函数提升会把整个函数挪到作用域顶部,变量提升只会把声明挪到作用域顶部
var
存在提升,我们能在声明之前使用。let
、const
因为暂时性死区的原因,不能在声明前使用var
在全局作用域下声明变量会导致变量挂载在window
上,其他两者不会let
和const
作用基本一致,但是后者声明的变量不能再次赋值
var a = 10
var a
console.log(a) //10
//相当于
var a
var a
a = 10
console.log(a)
为什么会出现变量提升?
//提升存在的根本原因就是为了解决函数间互相调用的情况
function test1() {
test2()
}
function test2() {
test1()
}
test1()