代码优化

jQuery 级联

旧代码:

self.$container.find('table>[dataviewid]').remove();
self.$container.find('table').append(_list.getDataModal());

优化1:

self.$container.find('table').children('[dataviewid]').remove().end().append(_list.getDataModal());

优化2(根据业务逻辑,经常变动的内容,放到一个容器里面,下面代码不一定对):

self.$container.find('table').empty().append(_list.getDataModal());

优化点

  1. 复制的选择符(table>[dataviewid]),最好拆解成简单的
  2. 选择符可以重用

插入DOM

旧代码

!function() {
    var amount = 10;
    var $footer = $('.footer-nav-regbar');
    for (var i = 0; i < amount; i++) {
        var $star = $('<div class="star-blink"><div></div></div>');
        $star.css({
            'top': Math.random() * 100 + '%',
            'left': Math.random() * 100 + '%',
            'animation': 'blink 5s infinite ' + Math.random() * 4 + 's ease-out',
            'opacity': Math.random() * 5 / 10 + 0.5
        });
        $footer.append($star);
    }
}()

优化1

!function() {
    var amount = 10;
    var $footer = $('.footer-nav-regbar');
    for (var i = 0; i < amount; i++) {
        $('<div class="star-blink"><div></div></div>').css({
            'top': Math.random() * 100 + '%',
            'left': Math.random() * 100 + '%',
            'animation': 'blink 5s infinite ' + Math.random() * 4 + 's ease-out',
            'opacity': Math.random() * 5 / 10 + 0.5
        }).appendTo($footer);
    }
}()

优化2

!function() {
    var amount = 10, s = '';
    for (var i = 0; i < amount; i++) {
        s += `<div class="star-blink" style="top: ${Math.random() * 100 + '%'}; left: ${Math.random() * 100 + '%'}; animation: ${'blink 5s infinite ' + Math.random() * 4 + 's ease-out'}; opacity: ${Math.random() * 5 / 10 + 0.5}"><div></div></div>`;
    }
    $('.footer-nav-regbar').append(s);
}()

优化点

  1. 重复插入 DOM,对性能有影响
  2. 链式操作,减少不必要变量的定义

遍历

旧代码:

for(let i=0,len=result.data.length; i<len; i++){
    if(result.data[i].code === 'FindM'){
        data.findm.pricingType$timeList = result.data[i].pricingType$timeList
    }
    if(result.data[i].code === 'FindCM'){
        data.findcm.pricingType$timeList = result.data[i].pricingType$timeList
    }
    if(result.data[i].code === 'FindMM'){
        data.findmm.pricingType$timeList = result.data[i].pricingType$timeList
    }
    if(result.data[i].code === 'FindS'){
        data.finds.pricingType$timeList = result.data[i].pricingType$timeList
    }
}

新代码:

result.data.forEach(item => {
    (data[item.code.toLowerCase()] || {}).pricingType$timeList = item.pricingType$timeList || {};
});

优化点

  1. 代码简洁优雅,性能更好,
  2. 能用性更强

转载于:https://my.oschina.net/pauli/blog/1815378

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值