Code A:
const isPresent = (ele, arr) => {
arr.forEach(e => {
if (ele === e) {
console.log("will return true")
return true
}
})
console.log("will return false")
return false
}
Code B:
const isPresent = (ele, arr) => {
console.log("arr:", arr)
console.log(ele)
if (arr.indexOf(ele) !== -1) return true
return false
}
实际情况中,A段代码到达return true后并不会停止,而是会接着运行下去return false.
想了一下,可能是因为每遍forEach都算一个小函数,所以只return true了单次循环的小函数,而不是return了isPresent函数。
改为B段代码后问题解决。
另外:以前还遇到过更棘手的情况,如何从最底层循环直接跳出多层(例如:直接返回至最上层)呢?如果不用goto的话还没想到有什么好办法。要是抛出异常然后catch的话感觉还不如goto...
Comments | NOTHING