通过一天的学习,楼主总结了一下关于js基础中的作用域的一些知识点。废话不多说,直接来分析。
首先请理解一下 什么是作用域?作用域你可以分开两部分来看,
域:就是空间范围
作用:就是读、写操作
所以,作用域的意思就是在什么范围内你可以进行读和写的操作
在深入了解作用域之前,我们还要研究一下浏览器,浏览器的内部有一段专门读取js的程序,我们给他起个名字叫做js解析器。下面我们了解一下这个解析器的工作方式。
js解析器工作至少分为两个步骤
1)准备工作,找一些东西,那么根据什么找呢?即根据 var function 参数这些东西找,例如变量: var a = 1 ,那么他就会找到变量a,注意,他只会找到声明的变量,而不会读取‘=’后面的东西,找到变量a后,js解析器提前给他赋了一个值undefined 。所以所有的变量在正式开始执行代码之前都会赋予一个值,这个值就是未定义。例如函数 function fn1(){alert(2);} 找到函数后给他什么值呢?函数里面一大堆,谁知道做什么呢,所以一上来找到的函数就是函数,即fn1=function fn1(){alert(2); },所以函数在正式执行代码之前都是整个函数块。
我们整个把第一步的准备工作起个名字,就叫做JS预解析。
2)逐行解读代码
看一个小段代码:
<script>
alert(a); //运行结果 undefined
a = 1;
alert(a); //运行结果 1
</script>
分析:第一步已经找到了变量a,并赋值undefined,第二步读代码, 在读到第一个alert的时候,a是未定义,第二行的时候,通过表达式修改了变量a的值,a变成了1,所以弹第二个alert的时候,弹出的是1。好了,了解整个js解析器的工作方式后,我们来看几个小示例吧。
示例1:
<script> //标号1-9只为便于分析哪行代码
1. alert(a); // function a(){alert(2);}
2. var a = 1;
3. alert(a); // 1
4. function a(){alert(1);}
5. alert(a);
6. var a = 2;
7. alert(a);
8. function a(){alert(2);}
9. alert(a);
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余4页未读,立即下载