WEB开发网
开发学院网页设计JavaScript 高质量JavaScript代码书写基本要点 阅读

高质量JavaScript代码书写基本要点

 2010-10-25 12:58:02 来源:WEB开发网   
核心提示:JavaScript中,你可以在函数的任何位置声明多个var语句,高质量JavaScript代码书写基本要点(6),并且它们就好像是在函数顶部声明一样发挥作用,这种行为称为hoisting(悬置/置顶解析/预解析),我们就采用了”hoisting”这个概念,这种ECMAScript标准中并未定义

JavaScript中,你可以在函数的任何位置声明多个var语句,并且它们就好像是在函数顶部声明一样发挥作用,这种行为称为hoisting(悬置/置顶解析/预解析)。当你使用了一个变量,然后不久在函数中又重新声明的话,就可能产生逻辑错误。对于JavaScript,只要你的变量是在同一个作用域中(同一函数),它都被当做是声明的,即使是它在var声明前使用的时候。看下面这个例子:

// 反例
myname = "global"; // 全局变量
function func() {
   alert(myname); // "undefined"
   var myname = "local";
   alert(myname); // "local"
}
func();
在这个例子中,你可能会以为第一个alert弹出的是”global”,第二个弹出”loacl”。这种期许是可以理解的,因为在第一个alert的时候,myname未声明,此时函数肯定很自然而然地看全局变量myname,但是,实际上并不是这么工作的。第一个alert会弹出”undefined”是因为myname被当做了函数的局部变量(尽管是之后声明的),所有的变量声明当被悬置到函数的顶部了。因此,为了避免这种混乱,最好是预先声明你想使用的全部变量。

上面的代码片段执行的行为可能就像下面这样:

myname = "global"; // global variable
function func() {
  var myname; // 等同于 -> var myname = undefined;
  alert(myname); // "undefined"
  myname = "local";
  alert(myname); // "local"}
func();
//zxx:关于JavaScript的置顶解析,我上周专门翻译了篇文章,您有兴趣可以看看:“翻译 – 解释JavaScript的置顶解析”。

为了完整,我们再提一提执行层面的稍微复杂点的东西。代码处理分两个阶段,第一阶段是变量,函数声明,以及正常格式的参数创建,这是一个解析和进入上下文的阶段。第二个阶段是代码执行,函数表达式和不合格的标识符(为声明的变量)被创建。但是,出于实用的目的,我们就采用了”hoisting”这个概念,这种ECMAScript标准中并未定义,通常用来描述行为。


上一页  1 2 3 4 5 6 7 8 9 10 11  下一页

Tags:高质量 JavaScript 代码

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接