在 javascript 中迭代选择

iterating a selection in javascript

这是一个改变偶数列表元素样式的简单代码,但是作为一个新手,我真的不明白下面的if语句是如何判断为真和判断为假的。因为我认为那把钥匙永远是真的。但是,当我 运行 代码时,我发现它并不总是正确的。有人可以解释为什么吗?

$(document).ready(
  function()
  {
    $('ul#rubberSoul li').each(
      function(key)
        {
          if (key & 1) {
            $(this).addClass('rubberSoulEven');
          }
        }
    );
  }
);

& 运算符对两个 32 位表达式(操作数)的每一位执行按位与运算。如果两边的位值为1,则结果为1。否则,结果为 0。按位与任何数字与 0 产生 0

例如,取这个表达式 x & y

x value   y value   result 
-----------------------------
1         1         1
1         0         0
0         1         0
0         0         0

因此,在您的情况下,它将检查 key 变量值的位表示和 1 在您的 if 条件中的位表示以及 return 结果。

operand1(key)  operand1-binary  operand2  operand2-binary   result 
------------------------------------------------------------------
1                 1              1           1                1
2                 10             1          01                0
3                 11             1          01                1
4                 100            1         001                0

key 是每个的索引,(key & 1) 对于奇数索引是正确的。

<ul id="rubberSoul ">
<li class="">One</li> # 0
<li class="">Two</li> # 1 
<li class="">Three</li> # 2
</ul>

您的 If 循环将仅对 second 语句 (<li class="">Two</li> # 1) 显示 true,因为它验证 (if (key & 1))