1、概述
- 1、函数申明和变量申明都会提升
- 2、函数的声明比变量的声明的优先级要高
- 3、函数提升需注意:
函数表达式 var fn=function fn(){}
函数声明方式 function fn(){}
我们需要重点注意的是,只有函数声明形式才能被提升。
变量赋值并没有被提升,只是声明被提升了。
但是,函数的声明有点不一样,函数体也会一同被提升。
2、代码测试
function test1() {
console.log(a);
function a() { }
var a;
console.log(a);
console.log(b);
var b;
function b() { }
console.log(b);
console.log(c);
var c = 12
function c() { }
console.log(c);
console.log(d);
function d() { }
var d = 12
console.log(d);
}
test1();
console.log('----------分割线---------')
function test2() {
console.log(a);
var a = function a() { }
var a;
console.log(a);
console.log(b);
var b;
var b = function b() { }
console.log(b);
console.log(c);
var c = 12
var c = function c() { }
console.log(c);
console.log(d);
var d = function d() { }
var d = 12
console.log(d);
}
test2();
3、参考文献
关于JS变量提升的一些坑