javascript函数中的奇怪行为

javascript函数中的奇怪行为,javascript,for-loop,Javascript,For Loop,此javascript应多次运行函数funclen,然后返回是否始终成功。相反,只要func返回false,就会取消for循环。这怎么解释呢?() 由于第一个函数返回false,res=res&&func(0)将false赋值给res。下次执行该行时,即res=res&&func(1),func(1)将不会执行,因为res为(并保持)false &&是。给定a和

此javascript应多次运行函数
func
len
,然后返回是否始终成功。相反,只要
func
返回false,就会取消
for
循环。这怎么解释呢?()


由于第一个函数返回
false
res=res&&func(0)
false
赋值给
res
。下次执行该行时,即
res=res&&func(1)
func(1)
将不会执行,因为
res
为(并保持)
false


&&
是。给定
a和
,如果
a
的计算结果为
false
b
根本不会被计算。

Pedantic:你可以直接返回
res
,而不是返回
res==true
,这在某些情况下可能返回未定义的值,并且不能解决问题。
function do_something(func, len) {
    var res = true;
    for (var i = 0; i < len; i++) {
        res = res && func(i);
    }
    return res == true;
}

do_something(function(x) {
    console.log(x);
    return false;
}, 5);

do_something(function(x) {
    console.log(x);
    return true;
}, 5);
0
0
1
2
3
4