在 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)
)
这是一个改变偶数列表元素样式的简单代码,但是作为一个新手,我真的不明白下面的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)
)