【发布时间】:2022-01-23 07:06:36
【问题描述】:
jquery each loop中的return word好像不会结束整个函数。这是下面的代码。目的是,当数组中的值不是数字时,它应该停止所有函数,而不仅仅是循环。但事实证明它只会停止循环并继续下面的其他逻辑。
在 C# 或 Java 中,返回词将停止整个函数。 JavaScript中不是这样设计的吗?
function testMehtod() {
var itemIds = [];
$("#confirmOrderItemContainer").find(":checkbox:checked").each(function (i, o) {
itemIds[i] = $(o).attr('item-id');
if (isNaN(itemIds[i])) {
return false;
}
});
//other logic ...
}
【问题讨论】:
-
函数无法退出调用它的函数。
.each()只能停止自己的循环,不能从testMethod()返回。 -
return语句只会通过返回指定值离开当前函数。在给定的示例中,它将结束 jQuery-each 方法中的每个匿名函数调用,并且对(外部)函数testMehtod()内的进一步执行没有影响。 -
@CarstenMassmann 它还将结束
.each()循环,因为它将return false;视为循环中的break语句。 -
是的@Barmar,你是对的!我忘记了这是 jQuery 内置到其
.each()方法中的那些古怪的附加功能之一 - 除了以相反的顺序回调参数:(index, element)而不是(element, index)像.map()。 -
@CarstenMassmann 公平地说,jQuery 的
.map()早于 EcmaScript 的版本。所以 ES5 交换了顺序。
标签: javascript jquery