[英]Weird behavior in javascript function
这个 javascript 应该运行函数func
len
次,然后返回它是否一直成功。 相反,只要func
返回 false,就会取消for
循环。 这怎么解释? ( jsfiddle )
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, 1, 2, 3, 4, 0, 1, 2, 3, 4
,但输出看起来像这样:
0
0
1
2
3
4
因为第一个函数返回false
, res = res && func(0)
将false
分配给res
。 下次执行该行时,即res = res && func(1)
, func(1)
将不会被执行,因为res
是(并保持) false
。
&&
是 短路。 给定a && b
,如果a
评估为false
,则根本不会评估b
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.