当前位置: 乐呵网 > js学习网 > JavaScript教程 >

Javascript开拓履历谈:编写美妙的代码

时间:2014-06-19 00:59来源:乐呵网提供 作者:乐呵网 点击:
采用更为简短的写法,不仅可以减少输入的字符数,还可以减少文件大小。大部分采用简单写法的代码,执行效率都

2.3 数组去反复Array范例并没有提供去反复的要领,假如要把数组的反复元素干掉,那得本身想步伐:

    alert(Array.prototype.slice.call(arguments));
};

要生成一个数组的副本,你会怎么做呢?遍历数组元素然后逐个赋值到另一个数组,这好像是独一的要领。其实,原生的Array.prototype.slice就可以到达复制的目标。这个要领可以从某个数组返回选定的元素,且不影响本来的数组。假如参数留空,返回的就是全部元素。

            return args[$2];

这里先容一个字符串名目化函数:

    for (var i = 0, len = elems.length; i < len; i++) {
}

var arr = [11, 2, 0, 12, 33];
        re,
}

        if (!hash[elem]) {

意思就是用第n个参数把%n替换掉。这样一来清晰多了吧。

                isRepeated = true;

function addEvent(elems, eventName, handler) {
也可以凭据工具的某个属性举办排序:
var grade = score < 60 ? “不合格” : “合格”;

        return a - b;
        }

另一个例子是数组排序,一般环境下,我们不需要别的写排序算法,用原生的Array.prototype.sort就够了。sort要领只有一个参数,该参数是一个函数,抉择两个对较量的元素谁在前谁在后,默认是凭据字符顺序排序,好比11会排在2之前。要按数字巨细排序,可以这样写:

三元操纵符也支持嵌套,可是嵌套的条理太多会影响措施的可读性,这方面要多加斟酌。

    { id : 11 },
        src2Suc: “请求2完成”,
    { id : 0 },
var arr = [
    var i = -1, len = elems.length;
var score = 60;
);
        }

总体思路是把数组元素逐个搬运到另一个数组,搬运的进程中查抄这个元素是否有反复,假如有就直接丢掉。从嵌套轮回就可以看出,这种要领效率极低。我们可以用一个hashtable的布局记录已有的元素,这样就可以制止内层轮回。刚好,在Javascript中实现hashtable是极为简朴的,改造如下:

            elems[i].attachEvent(eventName, handler);
            result.push(arr[i]);
        for (var j = 0, len = result.length; j < len; j++) {
arr.sort(

function unique(arr) {

一、简化代码

if (score < 60) {
    return String(str).replace(
        }
        while (++i < len) {
}

        }
} else {

3.2 为您的措施打造一个Config设置工具编写Java可能C#措施的时候,我们一般会从XML读取措施的设置信息。在Javascript内里,用XML做设置信息不大划算,一方面要多请求一个XML文件可能把XML字符串转换为XML工具,另一方面XML工具的要领较量巨大冗长。轻量级的JSON是最好的选择。

    }

element.innerHTML = ‘’ + text + ‘’;

无论是在开拓中照旧开拓后,保持代码清晰易读可以更快更精确地修改代码。

    var args = arguments, re = new RegExp(”%([1-" + args.length + "])”, “g”);
    { id : 22 }
arr.sort(
        while (++i < len) {
}

    url : {
            hash[elem] = true;
    return result;

element.innerHTML = String.format(’%3’, url, msg, text);

    for (var i = 0, len = arr.length; i < len; i++) {
            if (arr[i] == result[j]) {  
};

Array.prototype.slice还可以对某些不是数组而又能通过数字索引会见的范例举办操纵,好比arguments:

假如Config的数量较多,可以按照设置范例多嵌套一层,好比:
        }
    var result = [], isRepeated;
    }
        }

2.1 精简轮回体轮回的效率很洪流平上是由轮回体抉择的,与之对比,用for照旧while的不同就太小了。思量如下的代码,其成果是为某一批元素添加事件:

var Config = {
        .
    successTips : “请求完成”
                break;
            elems[i].addEventListener(eventName, handler, false);
};

        src1 : “test1.jsp”,

var score = 60, grade;
);

obj.p3 = ‘c’;
}

        .

arguments:
}
    }

function addEvent(elems, eventName, handler) {

1.1 简化常用工具界说:利用 var obj = {}; 取代 var obj = new Object();

            elems[i].attachEvent(”on” + eventName, handler);
网上传播的效率优化文章很是多,一些较量专业的Javascript书籍也谈到了不少,因此,这里就只列出一些很少谈到的。

        src1Suc : “请求1完成”,
    },

挪用要领很简朴:

    grade = “不合格”;
        src2 : “test2.jsp”,

二、利用高效率的代码
        }
    if (window.attachEvent) {
obj.p2 = ‘b’;

利用 var arr = []; 取代 var arr = new Array();

    );
    }

在Firefox下,它甚至可以对HtmlCollection举办操纵。惋惜在IE下不可。

回收更为简短的写法,不只可以淘汰输入的字符数,还可以淘汰文件巨细。大部门回收简朴写法的代码,执行效率都有轻微提高。

    return result;
        eventName = “on” + eventName;
    function(a, b) {
            result.push(elem);
        if (window.attachEvent) {
        isRepeated = false;
        .

1.2 精简if语句三元操纵符可以有效精简只涉及赋值传值操纵的if语句,好比

轮回每执行一次,城市判定window工具的attachEvent或addEventListener是否存在,其实这个仅判定一次也就够了;另外,“”on” + eventName”的字符串拼接也会反复执行。优化如下:

    p3 : ‘c’
};
    p2 : ‘b’,
        function($1, $2) {
        if (!isRepeated) {
    var result = [], hash = {};
    p1 : ‘a’,
obj.p1 = ‘a’;

三、使代码更易读、更好维护

var Config = {
        return a.id - b.id;
var obj = {
可以精简为:
        .
(责任编辑:admin)

------分隔线----------------------------
栏目列表
推荐内容