在JavaScript中,单个竖条意味着什么?
这个表达式在JS中是什么意思在JavaScript中,单个竖条意味着什么?,javascript,Javascript,这个表达式在JS中是什么意思 Value |= this.value 是二进制的“或”,就像C或C++或java一样。在本例中,它用于赋值运算符形式,所以 value |= this.value 表示this.value和value都转换为32位整数,并执行按位OR运算。如果操作前value为10且this.value为3(即二进制中的01010和011),则结果将为11(二进制中的01011) Javascript中的二进制逻辑运算符在Javascript中是值得注意的,因为这项工作是在整
Value |= this.value
是二进制的“或”,就像C或C++或java一样。在本例中,它用于赋值运算符形式,所以
value |= this.value
表示this.value
和value
都转换为32位整数,并执行按位OR运算。如果操作前value
为10且this.value
为3(即二进制中的01010
和011
),则结果将为11(二进制中的01011
)
Javascript中的二进制逻辑运算符在Javascript中是值得注意的,因为这项工作是在整数值上执行的
术语“按位”可能比“二进制”更准确。这些操作作用于数值的每一位,特别是强制为有符号32位整数的数值。结果也是一个有符号32位整数(根据规范)
但是,“静止”的JavaScript数字始终是64位二进制浮点值。因此,虽然使用32位整数数学计算,但按位运算符的结果以浮点形式存储。这是因为32位整数的范围适合64位浮点运算。这将在This.value
中的位与value
中已存储的位之间执行一次比较,然后将结果存储回value
var Value = 42; // 00101010
Value |= 96; // 01100000
window.alert(Value); // 01101010 -> 106
它是一个按位或赋值运算符,类似于
+=
。如果对其运行测试,如下所示:
<ol>
<script language="javascript">
var x=false;
document.writeln("<li>"+x+"</li>");
x|=true;
document.writeln("<li>"+x+"</li>");
x&=false;
document.writeln("<li>"+x+"</li>");
</script>
</ol>
本质上,
x |=y
等于说x=x | y
正如其他人所指出的,这是按位OR运算符。然而,我不认为人们在Javascript中对数值使用太多,因为一般来说,Javascript中不会进行大量计算。为了让您更好地了解为什么这个操作符是有用的,考虑用户需要填写多个文本字段中至少一个的更常见的情况。
假设您有以下HTML:
<input type="text" class="phone-nr" id="home-phone-nr-1" />
<input type="text" class="phone-nr" id="home-phone-nr-2" />
<input type="text" class="phone-nr" id="home-phone-nr-3" />
<input type="text" class="phone-nr" id="mobile-phone-nr-1" />
<input type="text" class="phone-nr" id="mobile-phone-nr-2" />
<input type="text" class="phone-nr" id="mobile-phone-nr-3" />
如果至少有一个带有classphone nr
的输入字段具有非空值,则valid
将为真
如果必须填写每个字段(更常见的要求),则可以使用按位AND运算符这样做:
var valid = true;
$('.phone-nr').each(function(i, item){
valid &= $(item).val();
}); // untested code
var valid = false;
$('.phone-nr').each(function(i, item){
valid ^= $(item).val();
}); // untested code
valid
仅当所有输入字段都有值时才为真
如果至少需要填写一个字段,但不超过一个,则可以使用异或运算符:
var valid = true;
$('.phone-nr').each(function(i, item){
valid &= $(item).val();
}); // untested code
var valid = false;
$('.phone-nr').each(function(i, item){
valid ^= $(item).val();
}); // untested code
在我看来,这些是Javascript中按位运算符的实际使用。运算符的实际使用
( 3|0 ) === 3;
( 3.3|0 ) === 3;
( 3.8|0 ) === 3;
( -3.3|0 ) === -3;
( -3.8|0 ) === -3;
( "3"|0 ) === 3;
( "3.8"|0 ) === 3;
( "-3.8"|0 ) === -3;
( NaN|0 ) === 0;
( Infinity|0 ) === 0;
( -Infinity|0 ) === 0;
( null|0 ) === 0;
( (void 0)|0 ) === 0;
( []|0 ) === 0;
( [3]|0 ) === 3;
( [-3.8]|0 ) === -3;
( [" -3.8 "]|0 ) === -3;
( [-3.8, 22]|0 ) === 0
( {}|0 ) === 0;
( {'2':'3'}|0 ) === 0;
( (function(){})|0 ) === 0;
( (function(){ return 3;})|0 ) === 0;
给我一些魔法
3 | '0px' === 3;
因此,如果“this.value”为“1”,则“value”将为“1”?取决于操作前
value
中的内容。它取决于语句前的“value”。例如,如果“值”为16,则结果将为17。这是一个按位操作。我会澄清的。同样值得注意的是,逻辑等价物似乎不是| |=,所以我不确定是否存在一个……感谢演示/更详细的解释,在阅读了两个更高评级的答案后,我仍然没有真正理解。我同意,我已经有一段时间没有得到逐位操作的用例了。演示很好,即使你理解了操作符是什么。这是一个更好的实际发生的例子。我喜欢这些例子。我想我不太明白“魔法”到底有多神奇。我认为它将是第一个值或0
,而不是0px
。更实用的是someVar | parseInt(someVar)
你认为你能翻译你的评论吗?