JavaScript自我总结16

131 阅读1分钟

//案例一:结果是几?

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);