变量提升
js在运行的时候会先扫描一遍代码,把所有的声明都提到前前面,再运行其它操作。
变量提升只会提升变量声明,并不会提升赋值,而函数是把整个函数提升上最前面。
函数提升在变量提升之前。
变量提升
console.log(a); // 输出结果 undefinded
var a = 10;
上面的代表执行起来的过程是这样的
var a;
console.log(a);
a = 10;
自然而然结果就是 undefined 了
函数声明提升
foo();
function foo () {
console.log("aaa");
}
会把函数声明提到最前面,相当于这样
function foo() { console.log("aaa") };
foo();
函数提升在变量提升之前
console.log(foo);
var foo = 20;
console.log(foo);
function foo() {
console.log(10);
}
console.log(foo);
上面的相当于
function foo() { console.log (10)};
var foo;
console.log(foo);
foo = 20;
console.log(foo);
console.log(foo);
输出结果为:
ƒ foo(){console.log(10);}
20
20