//案例一:结果是几?
function f1(){
var num=123;
function f2(){
var num=0;
console.log(num);//站在目标出发,一层一层的往外查找
}
f2();
}
var num=456;
f1();
//案例二:结果是几?
1.我们js引擎远行js分为两步:预解析 代码执行
(1).预解析js引擎会把js里面所有的var还有function提升到当前作用域的最前面
(2).代码执行 按照代码书写的顺序从上往下执行
2.预解析分为变量预解析(变量提升)和函数预解析(函数提升)
(1)变量提升:就是把所有的变量声明提升到当前的作用域最前面,不提升赋值操作
(2)函数提升:就是把所有的函数声明提升到当前的作用域最前面,不调用函数
//案例1
var num=10;
fun();
function fun(){
console.log(num);
var num=20;
}
//相当于执行了以下操作
var num;
function fun(){
console.log(num);
var num=20;
}
num=10;
fun();
//var a=18
function f1(){
var b=9;
console.log(a);
console.log(b);
var a=‘123’;
}
//相当于以下代码
var a;
function f1(){
var b;
var a;
b=9;
console.log(a);
console.log(b);
a=‘123’;
}
a=18;
f1();
//以下代码
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);
console.log(b);
console.log(c0;
}
f1();
console.log(c);
console.log(b);
console.log(a);