哪个更快/更有效?

时间:2014-04-03 06:48:08

标签: javascript jquery

以下哪一项更快/更有效/更少内存?

此:

$("#my-div").responsiveSlides({
    auto: true,
    pager: true,
    pause:true,
    nav: false,
    timeout: 3000,
    speed: 500,
    maxwidth: 482,
    namespace: "transparent-btns"
});

或者这个:

$target = $("#my-div");
if ($target.length !== 0) {

    $target.responsiveSlides({
        auto: true,
        pager: true,
        pause:true,
        nav: false,
        timeout: 3000,
        speed: 500,
        maxwidth: 482,
        namespace: "transparent-btns"
    });

}

1 个答案:

答案 0 :(得分:2)

第一个片段......

  • 查找具有指定ID的DOM元素,将结果包装在jQuery对象
  • 调用该对象上的插件,将其作为插件的上下文传递(this
  • 如果插件没有在通过函数暴露给外部世界的某个内部变量中存储对该jQuery对象的引用,则丢弃它(因为它不再被任何东西引用)

现在,如果正确编写插件,它会通过this.each或类似机制处理其元素。这意味着将立即处理空的jQuery对象。

第二个片段做了同样的事情,另外还有两件事:

  • 将jQuery对象存储在变量中(因此只有当变量超出范围时才会被丢弃,无论插件是如何编写的)
  • 检查jQuery对象长度

正如我所说,后者很可能是一项冗余检查。当你以后要重用这个元素时,前者很有用。否则,第一个片段应被视为最佳解决方案,即使它在任何有意义的规模的应用中几乎不重要。