按位运算符是否有可能一口气完成相当于“++i,--j”的操作?

Is it possible with bitwise operators to do the equivalent of "++i, --j" in one fell swoop?

所以我想做类似

的事情
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循环的声明中全部完成? ij 上是否有一些奇特的按位运算可以在单个语句中执行 ++i; --j

您要找的是逗号运算符吗?

for(var i=0, j=10; i<j; i++, j--)

按位运算符确实可以解决问题:

for(var i=0,j=arr.length-1; i < j; i++ & j--){
    alert(arr[i]+arr[j]);
}

之所以有效,是因为 ++ 和 -- 具有 return 值。根据您是将它们用作前递增运算符还是后递增运算符,return 值是递增之前或之后的值。 (与减量运算符类似)

由于 JavaScript 没有强类型,您可以将整数值与位运算符一起使用。数字 != 0 将被解释为 true,0 将被解释为 false。 & 运算符用于计算两个操作数。 && 只会在左侧评估为真时评估右侧。

不用说,所有这些都是不必要的诡计,确实应该用更简洁的代码代替。在您的示例中,只需将 j 替换为 arr.length-i-1 ,您就不必处理两个循环变量。

虽然其他答案清楚地展示了如何实现您想要的,但我宁愿建议您在可以避免的情况下不要使用两个计数器。在这里你可以使用 arr.length - j - 1 而不是 i.