[英]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.