我正在使用来自swipejs.com的swipejs,主页滑块使用此逻辑突出显示活动的无序列表元素,我想知道 while condition 的工作原理
<ul id="bullets">
<li></li>
....
</ul>
var bullets = document.getElementById('bullets').getElementsByTagName('li');
var elem = document.getElementById('mySwipe');
window.mySwipe = Swipe(elem, {
callback: function(index, element) {
var i = bullets.length;
while (i--) {
bullets[i].className = ' ';
}
bullets[index].className = 'on';
}
});
答案 0 :(得分:15)
数字0
在JavaScript中被认为是假的,所以while循环将一直运行直到它达到0.你必须确保我是积极的开始,否则你有一个无限循环。
答案 1 :(得分:13)
var i = bullets.length;
while (i--) {
...do stuff...
}
基本上相当于:
var i = bullets.length;
while (true) {
if (i === 0) {
i = i - 1;
break;
}
i = i - 1;
...do stuff...
}
这种循环方式倾向于在性能非常重要的情况下使用,因为它比从0
到length-1
的索引迭代要快一些,而且实现相对简单。
一般来说,除非您正在改善已知的瓶颈并且已经证实它以显着的方式提高了性能,否则不应该使用它。
答案 2 :(得分:1)
首先检查i
值(如果不是零),然后在减少后{/ 1>进入循环 }。
因此,如果i
= 10,将使用i
= 9,i
= 8,..,i
= 0执行循环,然后退出
(因为在上一次i
检查中,i--
将从之前的循环运行中已经为零)
答案 3 :(得分:0)
这意味着var i
正在递减直到它达到0(或在Javascript中为假)
答案 4 :(得分:0)
它将向后遍历所有整数i
,因为i--
将递减i
(你可以i++
递增,上升)(使其下降) 1)所以当它达到0时,它将被视为false
(当转换为bool时,除了0 之外的所有数字都为真),从而停止循环。
答案 5 :(得分:0)
i--将i的值设置为小于i的值。它与i ++相反,它逐一增加。
答案 6 :(得分:0)
i--
或i++
分别是i = i - 1
或i = i + 1
的简写。
因此while循环的工作方式如下:“while i = i - 1
不等于0,bullets[i].className = ' ';
”。
答案 7 :(得分:0)
i
将逐渐减少(因为用户期望长度为正值)。
因此,i
将在某个迭代中等于0,并且0在某些条件下就像假。
答案 8 :(得分:0)
while (i--) { code(); }
是说while (i > 0) { code(); i--; }