【问题标题】:Jquery: Why create a variable for something you're only referencing once?Jquery:为什么要为你只引用一次的东西创建一个变量?
【发布时间】:2010-07-15 18:18:19
【问题描述】:

所以对于这样的事情:

jquery:

$(document).ready(function(){
    var container = $('.rotate_container');
    var images = container.find('img');
    container.everyTime(10, function (){
        images.each(function() {
            container.animate({scrollTop: $(this).offset().top - 165}, 2000).delay(1000);
        });
    });
});

使变量“容器”和“图像”有什么意义?如果它们每个都只使用一次,那有什么帮助呢?

谢谢。

【问题讨论】:

    标签: jquery


    【解决方案1】:

    如果您肯定在代码中只访问一次元素,那么缓存它当然有意义。

    缓存DOM elements 的原因是访问它们非常昂贵。

    ECMAlandDOMland 之间穿越bridge 是最昂贵的部分。你真的可以把它比作一座桥,每次过桥都需要支付通行费。因此,将您已经支付过费用的东西保留在 ECMAland 中是有意义的。每次需要时不要过桥。

    在这张照片中,你会注意到,如果你只过桥一次也没关系。

    【讨论】:

    • 一方面,它可能只需要多一点内存来存储对该DOM元素的引用,另一方面,像这样的引用应该很容易被javascript引擎优化,所以它会优化为了记忆
    【解决方案2】:

    您可以将 images.each 替换为 container.find('img').each,但容器随后会被引用 3 次(.everytime、.find('img') 和 .animate)。

    【讨论】:

      【解决方案3】:

      这些变量基本上固定了每次定时发生的值。如果您考虑一下,图像可能会更改,标记可能会被修改等。这修复了为后续代码设置的 DOM 元素。是否合适取决于应用程序。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-10-13
        • 1970-01-01
        • 1970-01-01
        • 2020-05-10
        • 2022-11-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多