所以我想做一些像
这样的事情for ( var i = 0, j = (arr.length - 1); i < j; (++i; --j;) )
即。有两个操作,++i
和--j
,作为执行for循环体后发生的事情,相当于
for ( var i = 0, j = (arr.length - 1); i < j; )
{
// ...
++i; --j;
}
是否可以在for-loop的声明中完成所有操作?在i
和j
上是否可以在单个语句中执行++i; --j
一些奇特的按位操作?
答案 0 :(得分:1)
逗号运营商是您在寻找什么?
for(var i=0, j=10; i<j; i++, j--)
答案 1 :(得分:1)
按位运算符确实可以解决问题:
for(var i=0,j=arr.length-1; i < j; i++ & j--){
alert(arr[i]+arr[j]);
}
这是有效的,因为++和 - 具有返回值。根据您是将它们用作前置或后置运算符,返回值可以是递增前后的值。 (与减量运算符类似)
由于JavaScript没有强类型,因此可以对位运算符使用整数值。数字!= 0将被解释为true,0将被解释为false。 &amp;使用运算符以便评估两个操作数。 &安培;&安培;如果左侧评估为真,则仅评估右侧。
毋庸置疑,所有这些都是不必要的技巧,真正应该被更干净的代码所取代。在你的例子中,只需用arr.length-i-1替换j,你就不必处理两个循环变量。
答案 2 :(得分:1)
虽然其他答案清楚地显示了如何实现您想要的目标,但我建议您不要使用两个计数器,如果可以避免的话。在这里,您可以使用arr.length - j - 1
代替i
。