回答
它是二進制的「或」,就像在C或C++或Java中一樣。在這種情況下,在其賦值操作符表單的使用,所以
value |= this.value
意味着this.value
和value
都轉換爲32位整數,並且執行按位或運算。如果value
爲10,並且this.value
在操作前爲3(即,二進制中的01010
和011
),則結果將是11(二進制中的01011
)。
Javascript中的二進制邏輯運算符在Javascript中值得注意,因爲工作是在整數值上進行的。
術語「按位」可能比「二進制」更準確。這些操作對數值的每一位都起作用,特別是強制爲有符號32位整數的數值。結果也是一個有符號的32位整數(根據規範)。
但是,JavaScript數字「靜止」始終是64位二進制浮點值。因此,按位運算符的結果雖然是用32位整數數學計算的,但是以浮點形式存儲。這是有效的,因爲32位整數的範圍很適合64位浮點。
這將執行this.value
比特和已被存儲在所述Value
比特之間的bitwise OR,然後將結果存儲回Value
。
var Value = 42; // 00101010
Value |= 96; // 01100000
window.alert(Value); // 01101010 -> 106
這是實際發生的一個更好的例子。 – vol7ron 2013-05-26 17:53:58
這是一個按位或賦值運算符,與+=
類似。如果你像這樣運行就可以了測試:
<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>
你會得到如下的輸出(在IE)
1.false
2.1
3.0
從本質上講,x|=y
是等於說x=x|y
正如其他有指出,這是一個按位或運算符。然而,我不認爲人們在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" />
用戶必須填寫多個電話號碼的選項,但必須提供至少一個。
(在這種情況下與jQuery)做到這一點的最簡單的方法是:如果與phone-nr
類的至少一個輸入字段具有一個非空值
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
valid
如果所有輸入字段都只會是真實的一個值。
如果至少一個字段是必須要填寫,但不超過一個你可以使用XOR運算符:
var valid = false;
$('.phone-nr').each(function(i, item){
valid ^= $(item).val();
}); // untested code
那些是,在我看來,在現實世界使用的Javascript中的按位運算符。
感謝演示/更加充實的解釋,我在閱讀兩個更高評分的答案後仍然不太明白。 – 2012-05-05 14:54:00
我同意,自從我有一個用於按位操作的用例,已經有一段時間了。演示很好回來,即使你瞭解運營商是什麼。 – vol7ron 2013-05-26 17:26:07
對於操作者我已經發現了一些實際應用:
(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;
和一些魔術對我來說:
3 | '0px' === 3;
我喜歡這些例子。我不認爲我很理解這個「魔術」到底有多神奇。我認爲這將是第一個值或「0」,而不是「0px」。更可行的是'someVar | parseInt函數(someVar)' – vol7ron 2013-05-26 18:40:15
- 1. 在Ruby中,單個垂直條和等於條的含義是什麼?
- 2. Linux comman中兩個垂直條和冒號的含義是什麼?
- 3. $$在JavaScript中的含義是什麼?
- 4. 「=>」在JavaScript中的含義是什麼?
- 5. @cc_on在JavaScript中的含義是什麼?
- 6. $(document.body)在javascript中的含義是什麼?
- 7. '</'在JavaScript中的含義是什麼?
- 8. _(variable_name)在javascript中的含義是什麼?
- 9. @const在JavaScript中的含義是什麼?
- 10. $('')在JavaScript中的含義是什麼?
- 11. 「rot13」在Javascript中的含義是什麼?
- 12. javascript中的含義是什麼
- 13. javascript中的全局含義是什麼
- 14. JavaScript中匹配的含義是什麼
- 15. JavaScript中'#'符號的含義是什麼?
- 16. javascript中的行含義是什麼?
- 17. C - 這條線在這個結構中的含義是什麼?
- 18. 「q | p - 1」中的垂直條是什麼意思?
- 19. 爲什麼我的進度條不是垂直居中?
- 20. 大O符號中變量的垂直條是什麼意思?
- 21. 垂直條在javascript中顯示值
- 22. 什麼是key123包含的或在JavaScript函數中的含義
- 23. 這條線的含義是什麼?
- 24. 這條線的含義是什麼?
- 25. 每個在JavaScript中的含義是什麼?
- 26. 在JavaScript中顯式隱含的含義是什麼?
- 27. 對象值中的兩條垂直線在javascript中表示什麼?
- 28. 爲什麼這不是垂直居中?
- 29. Jquery垂直居中..錯誤是什麼?
- 30. 在PHP中,echo跟兩個單引號的含義是什麼?
因此,如果 「THIS.VALUE」 爲 「1」, 「價值」 會「1」? – samrockon 2010-10-26 14:04:28
取決於操作前的「價值」內容。 – 2010-10-26 14:07:19
僅當值爲0或1時 – Margus 2010-10-26 14:07:32