码迷,mamicode.com
首页 > Web开发 > 详细

js作用域学习

时间:2016-07-24 16:13:03      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:

 

代码解析至少分两步

1):查找var,function参数例如下面这个例子

    a= 未定义 

    fn1={alert(2)}函数的话,是整个整体

 2):逐行读代码:类似=+-%*等都是表达式,表达式可以改变值

example1:

<script>

 alert(a)   //最终结果:undefiner

var a=1

function fn1(){

alert(alert(2));

</script>

example2:

alert(a)         //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

//分析;

1):查找var  function 参数,,重名时只会留下有值的,这里第一个是undefine,所以踢掉,若都有值,那么谁后执行就留下谁

a=3(最后留下来的值)

 2):

example3:

var a=1;

function fn1(){

alert(a);

var a=2

}

fn1();//undefine

alert(a)//a=1

步骤1:

1):查找var function 参数

a=undefine 

fn1=function fn1(){

alert(a);

var a=2

}

步骤2

a=1

fn1=function fn1(){

alert(a);

var a=2

}

遇到里函数调用,函数内部的解析:函数内部查找var function参数

1,a=undefine

逐行运行函数内部的东西

alert出来是个 undefine 

a=2;这里的a是局部变量

步骤3,a=1;这里的a是要全局变量

example4:

var a=1;

function fn1(){

alert(a);//1

a=2

}

fn1()

alert(a)//2

步骤1;解析

a=undefine

fn1=function fn1(){

alert(a)

a=2}

步骤2:逐行读代码

a=1

步骤3

函数内部:空,,函数内部逐行读代码:从子级作用域找,

步骤4:得到值

example5:

var a=1

function fn1(a){

alert(a);

a=2;

}

fn1(a);//1

alert(a);//1

 

js作用域学习

标签:

原文地址:http://www.cnblogs.com/lixiuming521125/p/5700802.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!