我写了以下循环:
for (i = 10; i--; i > 5) {
console.log(i);
}
将其输出到控制台:
9
8
7
6
5
4
3
2
1
0
有谁能告诉我为什么要这样做?
我看了一下,似乎只是一个简单的问题,我必须使用for
循环的第三个参数,而不是第二个参数,但我很着迷记录到控制台的数字。任何人都可以给我一个简单的解释,为什么它输出它所做的数字?
答案 0 :(得分:4)
for loop
具有以下结构:
for (initial condition ; termination condition ; incremental condition)
在for loop
中,终止和增量条件被交换(!):
for (i = 10; i--; i > 5)
那是:
initial condition: i = 10
termination condition: i-- !!!
incremental condition: i > 5 ??? Does not do incremental
然后,只要终止条件返回true
(即i > 0
时),循环就会继续。
由于i
的初始值为10
,因此0
执行i--
次后10
只会变为9 8 7 6 5 4 3 2 1 0
,因此返回的结果为:
$("#element").on({
mouseenter: function () {
$("#box").fadeIn();
},
mouseleave: function () {
var $target = $("#box");
var timer = setTimeout(function () {
$target.stop(true, true).fadeOut();
}, 200);
$target.data('hoverTimer', timer);
}
});
总计10个循环。
答案 1 :(得分:1)
循环未按预期完成,因为Boolean(i--)
仅在i == 0
时为假;简而言之,你错位了比较和循环中的动作。
答案 2 :(得分:-1)
问题现在已经更正,所以请忽略:首先,你错了 - 它不会产生你指示的输出:)。相反,它会产生以下结果:
for (i = 11; i--; i > 5) {console.log(i);}
// 10 9 8 7 6 5 4 3 2 1 0
从10开始,而不是9:)。
其次,不允许更改for块中语句的顺序。相反,您必须如下所示指定它们:
for (i = 11; i > 5; i--) { console.log(i); }
// 11 10 9 8 7 6
第三(也是最重要的):
i
中添加了一个起始值;无论你想要什么或需要什么价值。i
。