Javascript检查数组对象非空值报Illegal return statement错误如何解决
报错原因
你遇到的Uncaught SyntaxError: Illegal return statement报错是因为return语句只能在函数内部使用,你当前的代码运行在全局作用域下,直接在for循环里写return属于语法错误。
同时原代码的循环逻辑还有隐藏问题:else分支的isNext = true赋值会覆盖之前匹配到非空值时的false结果,导致最终判断错误。
修复方案
方案1:调整原有for循环逻辑
把终止执行的return替换为终止循环的break,同时删除多余的else分支赋值即可:
let arr = [ { "config": "as", "payload": "" }, { "config": "as", "payload": "xc" }, { "config": "", "payload": "xc" }, { "config": "", "payload": "" } ] let isNext = true; for(let i=0; i < arr.length; i++) { if(arr[i].config !== '' || arr[i].payload !=='') { isNext = false break // 替换return为break终止循环 } } console.log('next', isNext);
方案2:使用数组原生方法简化实现
可以直接用Array.every()方法实现需求,代码更简洁易读,逻辑也更清晰:
let arr = [ { "config": "as", "payload": "" }, { "config": "as", "payload": "xc" }, { "config": "", "payload": "xc" }, { "config": "", "payload": "" } ] // 所有元素的config和payload都为空时返回true,否则返回false,完全匹配需求 const isNext = arr.every(item => item.config === '' && item.payload === '') console.log('next', isNext);
内容的提问来源于stack exchange,提问作者subhra_user
相关产品推荐
相关产品推荐

