javascript - 如何权衡闭包与重复获取~
巴扎黑
巴扎黑 2017-04-11 11:50:26
[JavaScript讨论组]
function tset() {
    var dom = $(dom); 
    
    $(btn).on('click', function () {
        dom.css('height', 'auto');
    });
}
function tset() {
    $(btn).on('click', function () {
        var dom = $(dom);
        dom.css('height', 'auto');
    });
}

第一种会形成闭包 然而第二种虽然执行完会释放变量 dom 然而如果下次 btn 点击的话 又会重复去取元素(重复取元素算频繁的 DOM 操作吗?) 这两种选哪一个会好一点?还是说要根据实际需求去判断 比如如果 btn 元素用户操作会特别频繁的话选择闭包 如这个位置的交互只是偶尔的话 选择执行完释放变量 轻微的优化一下内存~

巴扎黑
巴扎黑

全部回复(7)
巴扎黑

重复使用的话,肯定是上面那种好些.每次取获取dom元素比较消耗性能

ringa_lee

闭包没关系的不用纠结,肯定是重复取DOM耗性能

PHP中文网

第一种改成匿名函数

大家讲道理

首先明确,第一种写法不是闭包。
然后,第一种写法缓存了变量当然是更优。
再然后,你写的函数如果打算重复使用,应该把$(dom)的赋值放到函数之外。

PHPz

这就是你性能优化的事情了吧,跟生命周期有关吗,我也不知道

PHP中文网

要根据实际需求去判断

  • 当dom会动态改变时,必须重复获取dom。

  • 当dom静态不变时,优先缓存dom。

第一种的确是闭包,验证如下:

function test() {
    var i=0; 
        
    document.onclick = function () {
        console.log(++i)
    };
}
test()
伊谢尔伦

不用在意!
抛开业务谈优化的都是耍流氓!
忘了谁说的了,就不打标签了。
一般来说,前端是不需要考虑太多性能方面的问题的。
除非你做游戏或者大数据级的平台。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号