繁体   English   中英

javascript 函数中的奇怪行为

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

因为第一个函数返回falseres = 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM