变量提升与函数提升

变量提升与函数提升

变量提升

只有var定义的变量才会被提升

只提升声明,不提升赋值

1
2
3
console.log(a);// undefined
var a= "hello world";
console.log(a);// "hello world"

函数提升

只提升函数声明式,不提升函数字面量式

1
2
3
4
//函数声明式
function bar () {}
//函数字面量式
var foo = function () {}

会整体提升

1
2
3
4
5
getName()		// 小明

function getName() {
console.log('小明')
}

注意

1.后面覆盖前面

2.如果变量和函数同名,提升的是函数

3.变量提升会区分作用域

一道经典题目

1
2
3
4
5
6
7
8
9
10
11
console.log(a)
a();
var a=3;
function a (){
console.log(10)
}
console.log(a)
a=6;
a()

//输出结果:function a () {console.log()} 10 3 TypeError

变量提升与函数提升
http://example.com/2022/06/27/变量提升与函数提升/
Author
John Doe
Posted on
June 27, 2022
Licensed under