作用域:
作用:读、写
域:空间、范围、区域
<script></scriipt>就是一个域。
script域的特点 :全局变量,全局函数,自上而下、
函数也可以看成是一个域:局部变量,自上而下、
作用域简单的说就是:在什么空间范围内,你可以对你的数据进行读写操作。
预解析:
浏览器中用“JS解析器”来解析
JS代码而
"JS解析器"至少会做两连事(注意是至少,不是只做两件事)
1)JS的预解析--
"找一些东西":
寻找 var function 参数 等关键字,
根据var a提前设置为 a=未定义 ,
所有的变量,在正式运行前都提前赋值了一个未定义
函数在正式运行代码前,都是整个函数块。
f
n1=function fn1(){
alert(2);
}
2)逐行解读代码:
通过表达式,修改预解析好的代码的值
表达式:= + =*/ ++,--, 参数;
举个栗子加强理解:
alert(a); //弹出function a(){alert(4);}因为最后解析的a是函数
var a=1;
alert(a); //1
function a(){alert(2);}
alert(a) //弹1,因为表达式才可以改变预定义的代码的值
var a=3;
alert(a); //3
dunction a(){alert(4);}
alert(a); //2
a(); //报错,此时预定义的代码中,a=3,这个代码相当于是3();故报错
alert(typeof a) //Number