首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

JS 代码方式(1)

2012-11-04 
JS 代码模式(1)全局变量尽量不要使用javascript中的全局变量,因为1.全局变量生命周期长,长期占用内存。2.js

JS 代码模式(1)

全局变量

尽量不要使用javascript中的全局变量,因为
1.全局变量生命周期长,长期占用内存。
2.js代码可移值性不强,如果出现重名变量,前面的变量将被后面变量覆盖,使用前面变量的脚本出现问题。

在function中不用var修饰的变量为全局变量,例如:

function hello() {        alert(aa);}

?

此表达式由右向左解析,b为全局

function foo() {    var a = b = 0;    // ...}

?
应该为如下写法:

function foo() {    var a, b;    a = b = 0; // both local}

?

// 定义三个global变量var global_var = 1;global_novar = 2; // antipattern(function () {    global_fromfunc = 3; // antipattern}());// attempt to deletedelete global_var; // falsedelete global_novar; // true 删除的是global对象的属性delete global_fromfunc; // true 删除的是global对象的属性// test the deletiontypeof global_var; // "number"typeof global_novar; // "undefined"typeof global_fromfunc; // "undefined"

?

??? 在浏览器环境下window对象指向的是global对象,如果非浏览器环境:
??????

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

?

?? 单一的var

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

?

??好处:1.在函数的统一的区域可以查找到所有的局部变量
????? 2.防止在定义前使用变更错误
????? 3.使全局变量出现的可能性缩小,增强代码可读性
????? 4.更少的代码

?? for循环

对于下面循环方式是非常低效的,特别对于HTMLCollections对象,因为每一次遍历都要重新计算length,推荐把length用变量缓存起来
// sub-optimal loop
for (var i = 0; i < myarray.length; i++) {
??? // do something with myarray[i]
}
HTMLCollections are objects returned by DOM methods such as:
? document.getElementsByName()
? document.getElementsByClassName()
? document.getElementsByTagName()
document.images
document.links
document.forms
document.forms[0].elements

高效方式
for (var i = 0, max = myarray.length; i < max; i++) {
??? // do something with myarray[i]
}

热点排行
Bad Request.