ajax+asp的落伍者

制作火种之前的简单基础讨论--变量作用域

几乎每一本关于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;

}

}

顺便再说一句

局部变量优先级最高,我估计这不用我说,有经验的读者可以绕过以上内容,不过呢我是曾经被各种书的作用域曾经说的迷迷糊糊,有的资料更是说的很玄!我希望能用最简单的方法把复杂问题说清。

posted on 2010-01-23 11:51  钢子  阅读(215)  评论(0编辑  收藏  举报

导航