如何从jQuery的each循环中退出外层的JS函数?
解决方案
你可以通过以下两种常用方式实现需求:
方案1:标记变量法(推荐)
在外层函数声明一个终止标记,跳出$.each循环后判断标记状态,决定是否直接终止外层函数。
代码实现如下:
function readFields(){ // 声明终止标记,默认值为false let needExit = false; $('#tbl_units').each(function(key, value){ if($(value).val() === undefined){ needExit = true; return false; // 跳出当前$.each循环 } // 其余待执行逻辑 }); // 循环结束后判断标记,符合条件直接终止外层函数 if (needExit) return; // readFields后续待执行逻辑 }
方案2:异常捕获法
适合嵌套逻辑层级较深的场景,通过主动抛出自定义异常直接跳出所有嵌套层级,捕获后终止外层函数。
代码实现如下:
function readFields(){ try { $('#tbl_units').each(function(key, value){ if($(value).val() === undefined){ // 抛出自定义标识的异常,直接跳出循环 throw new Error('EXIT_READ_FIELDS'); } // 其余待执行逻辑 }); } catch (e) { // 匹配到自定义异常直接终止外层函数 if (e.message === 'EXIT_READ_FIELDS') return; // 非自定义异常正常抛出,不影响原有错误逻辑 throw e; } // readFields后续待执行逻辑 }
说明:优先使用方案1,逻辑更直观,无额外性能开销。方案2仅推荐在多层嵌套逻辑需要强制中断的场景下使用。
内容的提问来源于stack exchange,提问作者Xandar
相关产品推荐
相关产品推荐

