欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

js 代码方式(1)

更新时间: 2014-05-16 03:01:47 责任编辑: Author_N5

 

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 delete
delete global_var; // false
delete global_novar; // true 删除的是global对象的属性
delete global_fromfunc; // true 删除的是global对象的属性
// test the deletion
typeof 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]
}

上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-05-16 03:01:47
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/579093/
本文WWW.DOC100.NET DOC100.NET版权所有。