目录
二、预解析分为变量预解析(变量提升)和函数预解析(函数提升)
一、js引擎执行代码分为两步:预解析和代码执行
1.预解析会将js里面所有的var,function的声明提升到当前作用域的最前面
2.代码执行,按照代码书写顺序从上往下执行
二、预解析分为变量预解析(变量提升)和函数预解析(函数提升)
1.变量提升
就是把所有变量声明提升到当前作用域的最前面,但不提升赋值操作。
2.函数提升
就是把所有的函数声明提升到当前作用域的最前面,但不调用函数。
三、案例
console.log(num1);
var num1 = 12;
//相当于
// var num1;
// console.log(num1);
// num1=12;
所以输出undefined
fn();
function fn() {
var a = 20;
console.log(a);
}
//相当于
// function fn() {
// var a = 20;
// console.log(a);
// }
// fn();
能正常输出20
fn1();
var fn1 = function() {
console.log(22);
}
函数表达式 调用必须写在函数表达式的下面