Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript中,单个竖条意味着什么?_Javascript - Fatal编程技术网

在JavaScript中,单个竖条意味着什么?

在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中是值得注意的,因为这项工作是在整

这个表达式在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中是值得注意的,因为这项工作是在整数值上执行的

术语“按位”可能比“二进制”更准确。这些操作作用于数值的每一位,特别是强制为有符号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" />
如果至少有一个带有class
phone 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)
你认为你能翻译你的评论吗?