Fré*_*idi 24
这将在位中this.value
和已存储的位之间执行按位ORValue
,然后将结果存储回Value
.
var Value = 42; // 00101010
Value |= 96; // 01100000
window.alert(Value); // 01101010 -> 106
Run Code Online (Sandbox Code Playgroud)
Poi*_*nty 15
它是二进制"OR",就像在C或C++或Java中一样.在这种情况下,它在其赋值运算符形式中使用,所以
value |= this.value
Run Code Online (Sandbox Code Playgroud)
表示this.value
并且value
都被转换为32位整数,并执行按位OR运算.如果value
为10和this.value
操作之前分别为3(即,01010
与011
在二进制)的结果将是11(01011
二进制).
Javascript中的二进制逻辑运算符在Javascript中是值得注意的,因为工作是在整数值上执行的.
术语"逐位"可能比"二进制"更准确.操作作用于数值的每个位,特别是强制转换为带符号的32位整数的数值.结果也是一个带符号的32位整数(根据规范).
但是,"静止"的JavaScript编号始终是64位二进制浮点值.因此,虽然使用32位整数数学计算,但按位运算符的结果以浮点形式存储.这是因为32位整数的范围可以在64位浮点中舒适而精确地拟合.
小智 12
正如其他人所指出的,这是按位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" />
Run Code Online (Sandbox Code Playgroud)
用户可以选择填写多个电话号码,但必须至少提供一个.
最简单的方法(在这种情况下使用jQuery)是:
var valid = false;
$('.phone-nr').each(function(i, item){
valid |= $(item).val();
}); // untested code
Run Code Online (Sandbox Code Playgroud)
valid
如果至少有一个带有类的输入字段具有phone-nr
非空值,则为true .
如果必须填写每个字段(更常见的要求),可以使用按位AND运算符执行此操作:
var valid = true;
$('.phone-nr').each(function(i, item){
valid &= $(item).val();
}); // untested code
Run Code Online (Sandbox Code Playgroud)
valid
仅当所有输入字段都有值时才会为true .
如果至少需要填写单个字段,但不能超过一个,则可以使用XOR运算符:
var valid = false;
$('.phone-nr').each(function(i, item){
valid ^= $(item).val();
}); // untested code
Run Code Online (Sandbox Code Playgroud)
在我看来,这些是Javascript中按位运算符的真实用法.
Dan*_*Dan 10
我找到的那个运算符的一些实际用途:
( 3|0 ) === 3; // ????? ????? ?? ????????
( 3.3|0 ) === 3; // ? ??????? ????? ??????????? ??????? ?????
( 3.8|0 ) === 3; // ?? ?????????, ? ?????? ??????????? ??????? ?????
( -3.3|0 ) === -3; // ? ??? ????? ? ? ????????????? ??????? ?????
( -3.8|0 ) === -3; // ? ??????? Math.floor(-3.3) == Math.floor(-3.8) == -4
( "3"|0 ) === 3; // ?????? ? ??????? ????????????? ? ????? ??????
( "3.8"|0 ) === 3; // ??? ???? ????? ?? ????????????? ??????? ?????
( "-3.8"|0 ) === -3; // ? ??? ????? ? ? ????????????? ??????? ?????
( NaN|0 ) === 0; // NaN ?????????? ? ????
( Infinity|0 ) === 0; // ?????????? ? ???? ?????????? ? ? ??????????????,
( -Infinity|0 ) === 0; // ? ? ????? ??????????????,
( null|0 ) === 0; // ? ? null,
( (void 0)|0 ) === 0; // ? ? undefined,
( []|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;
Run Code Online (Sandbox Code Playgroud)
对我来说还有一些魔力:
3 | '0px' === 3;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12711 次 |
最近记录: |