JS中的函数提升和变量提升

分类:js

概念

变量提升和函数提升:就是将变量声明或者函数全部代码提升到当前作用域(全局作用域或函数作用域)最开始的部分。

JavaScript 中函数域为最小域范围。

变量提升

所指的形式:var a = '提升';(必须有关键字var)。

1
2
3
console.log(a);
var a = "123";
console.log(a);

这段代码相当于:

1
2
3
4
var a;
console.log(a); //undefined
a = "123";
console.log(a); //123

函数提升

函数提升所指的形式:function fn(){};(必须是函数声明式,不能是函数表达式)。

函数提升的方式:将function fn(){}整个函数声明代码块提升到当前作用域的顶部。

1
2
3
4
5
6
7
8
f1();
f2();
function f1() {
console.log("我是函数f1。。。");
}
var f2 = function() {
console.log("我是函数f2。。。");
};

这段代码相当于:

1
2
3
4
5
6
7
8
9
var f2;
function f1() {
console.log("f1");
}
f1(); //f1
f2(); //报错
f2 = function() {
console.log("f2");
};

PS函数声明与函数表达式的区别