提高javascript性能的68个技巧(1)

来源:互联网 发布:三一重工大数据平台 编辑:程序博客网 时间:2024/04/29 16:31

Effective javaScript:68 items


提高javascript性能的68个技巧

1.Accustoming Youself to JavaScript

Item1:

ES5中默认参数:

function point(x, y) {    if (!x) {        x = 320;    }    if (!y) {        y = 240;    }    return { x: x, y: y };}

过滤undefined:

if (typeof x === "undefined") {        x = 320;    }    if (typeof y === "undefined") {        y = 240;    }

Item2:

通过new String创建的字符串类型为Object

var s = new String("hello");typeof s;   // "object"

Item3:

使用==的几种情形

Item4:

javascript可以自动的在行末添加分号,判断依据是需要最后一行为空行

Semicolons are only ever inferred before a }, at the end of a line, or at the end of a program.

2.Variable Scope

Item6:

最小化使用全局变量

var foo = "global foo";this.foo = "changed";foo; // "changed"

Item7:

强大的闭包

function sandwichMaker(magicIngredient) {    function make(filling) {        return magicIngredient + " and " + filling;    }    return make;}var hamAnd = sandwichMaker("ham");hamAnd("cheese");        // "ham and cheese"hamAnd("mustard");       // "ham and mustard"var turkeyAnd = sandwichMaker("turkey");turkeyAnd("Swiss");      // "turkey and Swiss"turkeyAnd("Provolone");  // "turkey and Provolone"

function box() {    var val = undefined;    return {        set: function(newVal) { val = newVal; },        get: function() { return val; },        type: function() { return typeof val; }    };}var b = box();b.type(); // "undefined"b.set(98.6);b.get();  // 98.6b.type(); // "number"

Item8:

变量声明提升(声明式函数),代码:

function trimSections(header, body, footer) {    for (var i = 0, n = header.length; i < n; i++) {        header[i] = header[i].trim();    }    for (var i = 0, n = body.length; i < n; i++) {        body[i] = body[i].trim();    }    for (var i = 0, n = footer.length; i < n; i++) {        footer[i] = footer[i].trim();    }}

相当于:

function trimSections(header, body, footer) {    var i, n;    for (i = 0, n = header.length; i < n; i++) {        header[i] = header[i].trim();    }    for (i = 0, n = body.length; i < n; i++) {        body[i] = body[i].trim();    }    for (i = 0, n = footer.length; i < n; i++) {        footer[i] = footer[i].trim();    }}
原创粉丝点击