一.预解析
1.我们js引擎运行js 分为两步:预解析 代码执行
(1).预解析 js引擎会把js 里面所有的 var 还有 function 提升到当前作用域的最前面
(2).代码执行按照代码书写的顺序从上往下执行
2.预解析分为变量预解析(变量提升)和函数预解析(函数提升)
(1)变量提升就是把所有的变量声明提升到当前的作用域最前面不提升赋值操作
(2)函数提升就是把所有的函数声明提升到当前作用域的最前面不调用函数
例1:
例2:
二.预解析案例
案例1:
相当于以下代码
var fn
fn ( )
fn = function ( ) {
console.log( '想不到吧');
}
案例2:
相当于以下代码:
var a ;
function f1(){
var b;
var a;
b=9;
console.log(a);
console.log(b);
a='123';
}
a=18;
f1();
案例3:
相当于以下代码
var a
function a( ) {
return false;
}
alert( a)
a = 1;
alert( a);
案例4:
相当于以下代码
function f1(){
var a;
a=b=c=9;
// 相当于var a = 9; b = 9; c = 9; b和c直接赋值 没有var声明 当全局变量看
// 集体声明var a = 9,b= 9,c=9;
console.log(a); 9
console.log(b); 9
console.log(c); 9
}
console.log(c); 9
console.log(b); 9
console.log(a); 报错