制作火种之前的简单基础讨论--变量作用域
几乎每一本关于js的书,都要讲讲作用域,而且篇幅都不小,我把我个人总结的两点贡献给大家,希望大家尽量以简洁的方式认识作用域,实际作用域遵从两个法则,我个人管这两个法则一个叫平下法,另一个叫顺序法。先说第一个,一个var他的有效作用域就是平行之间引用和向下引用是正确的,简单的代码实例:
function a(){
do something;
}
//----------平行引用---------
function b(){
a();//这个引用是有效的 因为a和b平行
}
//-------向下引用------------
function b(){
function c(){
a();//这也是正确的 因为function c这是向下(闭包)函数(如果不理解闭包的读者会比较难懂)
}
}
第二个是顺序法则
以上是function 遵循平下法则
要是var呢 他不仅遵循平下法则,还要遵循顺序法则,反之function 不遵循顺序法则。
示例代码:
function b(){
var a="first var";
Response.Write(a);//服务器端这是正确的
alert(a);//客户端这是正确的
}
function b(){
Response.Write(a);//这是不正确的
var a=“first var”;
}
//-------举一反三-------
function a(){
b();//这是一定不行的 因为他是var
var b=function(){
do something;
}
}
顺便再说一句
局部变量优先级最高,我估计这不用我说,有经验的读者可以绕过以上内容,不过呢我是曾经被各种书的作用域曾经说的迷迷糊糊,有的资料更是说的很玄!我希望能用最简单的方法把复杂问题说清。