[英]Is there a & logical operator in Javascript
我想知道 Javascript 中是否有“&”邏輯運算符。 我嘗試在 Firebug(Firefox) 中運行 1 & 0 和 1 && 0 並且兩者都返回 0 。
有人告訴我 C# 接受 & 和 double &&,double 效率更高,因為它會在遇到 false 時立即退出比較循環,但我無法找到有關 Javascript 的任何信息。
有任何想法嗎?
不。 &
是按位 AND運算符。 &&
是 Javascript 中唯一的邏輯 AND 運算符。
&&
運算符為表達式1 && 0
返回0
,因為它的語義與其他類 C 語言中的相同運算符的語義不同(好吧,符號上相同)。
在 Javascript 中, &&
運算符確實將其操作數強制為布爾值,但僅用於評估目的。 形式表達式的結果
e1 && e2 && e3 ...
是強制布爾值為false
的第一個子表達式en
的實際值。 如果強制為布爾值時它們都為true
,則結果是最后一個en
的實際值。 同樣, ||
運算符解釋這樣的表達式:
e1 || e2 || e3 ...
通過返回強制布爾值為true
的第一個en
的實際值。 如果它們都是假的,那么該值就是最后一個的實際值。
這些描述中隱含的事實是&&
和||
一旦滿足完成條件,就停止計算子表達式。
1 & 0 是 0。
它是一個按位運算符,而不是一個邏輯運算符。
&& 表示左右運算符的邏輯與。 這意味着只有當左右運算符都解析為布爾真時,它才會返回布爾真值。
& 表示左右運算符的按位與。 這意味着將比較每個操作數的位,結果將是 AND 運算的值,而不是布爾值。 如果您執行101 & 100
則返回值為100
。 如果執行1 & 0
,則返回值為0
。
如果有人告訴您區別僅在於效率,您就被誤導了這兩個運算符的含義。 它們有非常不同的用途。
你的朋友對 C# 的看法是錯誤的。
C# 不混合邏輯運算符和按位運算符,因此您不能在需要 && 的地方使用 & ,反之亦然。
1 & 0 返回 0
true && false 返回 false
因此,如果您正在編寫一個需要布爾值的 if 語句,則必須使用 &&。 如果你在做按位算術,那么你需要 &。
是的。 Javascript 兩者都有。 http://www.eecs.umich.edu/~bartlett/jsops.html
與 C# 中的 true 完全一樣,雙 && 版本可以在遇到 false 時立即停止,而單 & 版本可能不會。
您可以在 javascript 中按位檢查:
https://www.w3schools.com/js/js_bitwise.asp
& is 如果兩位都為 1,則將每一位設置為 1
例子:5 & 1 = 1
0101 & 0001 = 0001
&& 是 Javascript 中的邏輯運算符。 1 && 0 應該返回 false 以便它正確執行。
Javascript 具有按位 (&) 和布爾 (&&) 運算符。 && 在 1 && 0 上返回 0 的原因是因為 0 表示 false,因此 1 (true) && 0 (false) 返回 false,因為兩個運算符都必須評估為 true 才能返回 true
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.