作用域和预解析

瘦欲@ 提交于 2020-01-22 20:33:30

// 作用域:

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

// 作用:读、写

 

 

script 全局变量、全局函数

自上而下

 

函数

由里到外

 

{}

 

 

浏览器:

“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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!