javascript - jQuery 中 .each() 函数相对于传统 "for"循环的优势

标签 javascript jquery

我的一位同事建议我使用 jQuery .each()通过 javascript for 循环遍历我页面上的 DOM 元素,我不是 jQuery 的新手,但一直不明白开发人员倾向于使用 的真正原因>.each() 结束 javascript 的循环。谁能给我解释一下?

最佳答案

如果您想使用 for 进行迭代循环,你必须增加索引:

for(var i=0; i<arr.length; ++i) {

然后您必须使用索引获取实际值:

var value = arr[i];

.each为您完成这两项并将值传递给函数:

$(...).each(function(i, value) {
    // actual interesting part of the loop...
});

它只是为您节省了递增索引和获取该索引值的样板代码。

.each 中定义的变量函数也被关闭(即在 closure 内),因此等效代码(考虑循环和变量闭包,加上设置 this ,以及中断 false 返回值)可能是这样的:

(function() {
    for(var i=0; i<arr.length; ++i) {

        var ret = (function(index, value) {
            // actual interesting part of the loop...
        }).call(arr[i], i, arr[i]);

        if(ret === false) break;
    }
})();

要输入的内容要多一些。

在执行性能方面,.each比原始 for 慢(不出所料)循环,因为它所做的远不止原始 for循环。

关于javascript - jQuery 中 .each() 函数相对于传统 "for"循环的优势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16192395/

相关文章:

javascript - AngularJS - 使模型变量可用于 jQuery?

javascript - 您是否忘记在 django 中注册或加载此标签

javascript - 通过 AJAX 拉入 JSON 以填充下拉列表

javascript - 在 colorbox 内提交表单后重新加载 dataTable

javascript - 将类添加到 li 时检测事件

javascript - PhantomJS中的Vue2单元测试,如何发送按键或触发事件?

jquery - 关闭时清除 jquery 对话框内容

javascript - 我怎样才能实现这个twbs分页

javascript - 未捕获的类型错误 : Cannot read property 'length' of undefined in d3. js

jquery - 使用 jQuery 拉伸(stretch)图像以填充整个 div,它在窗口调整大小时调整大小