作用域和预解析

// 作用域:

// 域:空间、范围、区域……

// 作用:读、写

script 全局变量、全局函数

自上而下

函数

由里到外

扫描二维码关注公众号,回复: 8782208 查看本文章

{}

浏览器:

“JS解析器”

1)“找一些东西” :var function 参数

a = ...

所有的变量,在正式运行代码之前,都提前赋了一个值:未定义

fn1 = function fn1(){ alert(2); }

所有的函数,在正式运行代码之前,都是整个函数块

JS 的预解析

遇到重名的:只留一个

变量和函数重名了,就只留下函数

2)逐行解读代码:

表达式:= + - * / % ++ -- ! 参数……

表达式可以修改预解析的值!

alert(a); // function a (){ alert(4); }

var a = 1;

alert(a); // 1

function a (){ alert(2); }

alert(a); // 1

var a = 3; 

alert(a); // 3

function a (){ alert(4); }

alert(a); // 3

alert( typeof a );

// a(); // 报错

*/

/*

var a = 1;

function fn1(){

alert(a); // undefined

var a = 2;

}

fn1();

alert(a); // 1

var a = 1;

function fn1(){

alert(a); // 1

a = 2; 局部可以改变外部,第二个a变成了2

}

fn1();

alert(a); // 2  

*/

/*

var a = 1;

function fn1(a){

alert(a); // undefined

a = 2;

}

fn1();

alert(a); // 1

var a = 1;

function fn1(a){

alert(a); // 1

a = 2;

}

fn1(a);

alert(a); // 1

猜你喜欢

转载自www.cnblogs.com/tongguilin/p/12229496.html