【发布时间】:2018-04-25 07:46:06
【问题描述】:
我想在 jQuery Each Loop 中间立即返回时遇到了奇怪的行为,我的期望是,下面的函数应该返回 TRUE(条件匹配)。但我仍然得到 FALSE。这在 Java 中可以工作,但在 JS/jQuery 中不起作用?
function returnFromLoop(eventIDs) {
jQuery.each(eventIDs, function(index, item) {
if (item.indexOf("TEST") != -1) {
return true;
}
});
return false;
}
var eventIDs = [];
eventIDs.push('abc');
eventIDs.push('defTEST');
eventIDs.push('ghi');
var result = returnFromLoop(eventIDs);
console.log('result = ' + result);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
【问题讨论】:
-
return true;语句在.each()回调函数中,因此它只会影响它。它不会从外部函数返回。 -
并且没有办法在保持这种语法的同时强制函数返回?
-
附带说明,您应该考虑使用更现代的 JS。浏览器支持是个问题,但新的 Array 函数都可以很容易地填充以提供 IE 向后兼容性,即使没有像 Babel 这样复杂的构建链工具。您可以在没有 jQuery 的情况下完成上述操作,只需使用
return eventIDs.includes(id => item.includes("TEST"))作为函数体。
标签: javascript jquery