函数预解析
1.什么是预解析?
浏览器在执行JS代码的时候会分成两部分操作:预解析以及逐行执行代码.
也就是说浏览器不会直接执行代码,而是加工处理之后在执行.
这个加工处理的过程,我们就称之为预解析.
2.预解析规则
- 将变量声明和函数声明提升到当前作用域的最前面.
- 将剩余代码按照书写顺序依次放在后面.
3.注意点
通过let定义的变量不会被提升(不会被预解析)
练习
// 1.下列程序的执行结果是什么?
var a = 666;
test();
function test() {
var b = 777;
console.log(a);
console.log(b);
console.log(c);
var a = 888;
let c = 999;//let定义的变量不能预解析
}
/*
var a;
function test() {
var b;
var a;
b = 777;
console.log(a);//undefined
console.log(b);//777
console.log(c);//报错
a = 888;
let c = 999;
}
a = 666;
test();
*/