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

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

 2010-10-25 12:58:02 来源:WEB开发网   
核心提示:由于JavaScript的两个特征,不自觉地创建出全局变量是出乎意料的容易,高质量JavaScript代码书写基本要点(3),首先,你可以甚至不需要声明就可以使用变量;第二,使用全局变量如履薄冰,因为你会无意中覆盖你最初环境下不存在的主机对象(所以你原以为名称可以放心大胆地使用,JavaScript有隐含的全局概念,意

由于JavaScript的两个特征,不自觉地创建出全局变量是出乎意料的容易。首先,你可以甚至不需要声明就可以使用变量;第二,JavaScript有隐含的全局概念,意味着你不声明的任何变量都会成为一个全局对象属性。参考下面的代码:

function sum(x, y) {
  // 不推荐写法: 隐式全局变量
  result = x + y;
  return result;
}
此段代码中的result没有声明。代码照样运作正常,但在调用函数后你最后的结果就多一个全局命名空间,这可以是一个问题的根源。

经验法则是始终使用var声明变量,正如改进版的sum()函数所演示的:

function sum(x, y) {
  var result = x + y;
  return result;
}
另一个创建隐式全局变量的反例就是使用任务链进行部分var声明。下面的片段中,a是本地变量但是b确实全局变量,这可能不是你希望发生的:

// 反例,勿使用
function foo() {
  var a = b = 0;
  // ...
}
此现象发生的原因在于这个从右到左的赋值,首先,是赋值表达式b = 0,此情况下b是未声明的。这个表达式的返回值是0,然后这个0就分配给了通过var定义的这个局部变量a。换句话说,就好比你输入了:

var a = (b = 0);如果你已经准备好声明变量,使用链分配是比较好的做法,不会产生任何意料之外的全局变量,如:

function foo() {
  var a, b;
  // ... a = b = 0; // 两个均局部变量
}
然而,另外一个避免全局变量的原因是可移植性。如果你想你的代码在不同的环境下(主机下)运行,使用全局变量如履薄冰,因为你会无意中覆盖你最初环境下不存在的主机对象(所以你原以为名称可以放心大胆地使用,实际上对于有些情况并不适用)。


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

Tags:高质量 JavaScript 代码

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