网络编程
位置:首页>> 网络编程>> JavaScript>> 如何编写高质量的Javascript代码(3)

如何编写高质量的Javascript代码(3)

 来源:rockux 发布时间:2011-03-07 16:04:00 

标签:javascript,代码,经验

忘记var的影响

使用var声明的全局变量和没有使用var生成的全局变量还有一个区别在于删除:

使用var声明创建的全局变量不能被删除

没有使用var声明的全局变量可以被删除

这说明没有使用var声明生成的全局变量不是真正的变量,他们只是全局对象的属性。属性可以通过delete删除,但是变量不行:




// define three globals
var global_var = 1;
global_novar = 2; // antipattern
(function () {
   global_fromfunc = 3; // antipattern
}()); 
 
// attempt to delete
delete global_var; // false
delete global_novar; // true
delete global_fromfunc; // true 
 
// test the deletion
typeof global_var; // "number"
typeof global_novar; // "undefined"
typeof global_fromfunc; // "undefined"

在ES5的严格模式下,给一个为声明的变量赋值会报错。

读取全局对象

在浏览器中,你可以通过window变量来读取全局对象(除非你在函数内部重新定义了window对象)。但在有的环境中,可能不叫window,那么你可以使用下面的代码来获取全局对象:




var global = (function(){
     return this;
})();

这样可以获取到全局对象的原因是在function的内部,this指向全局对象。但是这在ES5的严格模式下会不起作用,你需要适配一些其他模式。当你开发自己的库的时候,你可以把你的代码封装在一个立即函数中,然后将this作为一个参数传进来。

单个var模式

在你的代码的顶部只是用一个var关键字,会有以下的好处:

对于所有需要的变量,在一个地方就可以全部看到

避免使用一个未定义的变量

帮助你记忆声明的变量,减少全局变量

更精简的代码

书写很简单:




function func() {
   var a = 1,
       b = 2,
       sum = a + b,
       myobject = {},
       i,
       j;
   // function body...
}

通过一个var和逗号来声明多个变量。在声明的时候给变量赋默认值也是不错的做法,可以避免一些逻辑错误,提高代码的可读性。而后你阅读的代码的时候也可以根据变量的默认值来方便的猜测变量的用途。

你也可以在声明变量的时候做一些实际的工作,比如sum = a + b;另外,在操作DOM元素的时候,你也可以把DOM元素的引用保存在一个变量中:




function updateElement() {
   var el = document.getElementById("result"),
       style = el.style;
   // do something with el and style...
}

 

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com