JavaScriptの&と&&の違いは何ですか?
サンプルコード:
var first = 123;
var second = false;
var third = 456;
var fourth = "abc";
var fifth = true;
alert(first & second); // 0
alert(first & third); // 72
alert(first & fourth); // 0
alert(first & fifth); // 1
alert(first && second); // false
alert(first && third); // 456
alert(first && fourth); // abc
alert(first && fifth); // true
&&は論理的な「and」のようで、両方が真の場合は常に2番目の値が与えられます。
しかし、&とは何ですか?
(ちなみに、&&はPythonでは "and"であるようです;&はPythonで&であるようです。)
&
はビット単位ANDこの演算子は、2つの数字を期待し、数字を戻します。数字ではなく、数字にキャストされます。
どのように機能しますか?ウィキペディアには答えがあります: https://en.wikipedia.org/wiki/Bitwise_operation#AND
注:Javascriptでは、この演算子の使用法はdiscouraged、整数データ型はなく、浮動小数点のみです。したがって、フロートはすべての操作の前に整数に変換されるため、処理が遅くなります。また、典型的なWebアプリケーションでは実際には使用されず、読み取り不能なコードを生成します。
一般規則:避けてください。使用しないでください。保守可能で読みやすいJSコードにはめったに配置されません。
&&
は論理AND2つの引数を予期し、以下を返します。
ここではいくつかの例を示します。
0 && false 0 (both are false-y, but 0 is the first)
true && false false (second one is false-y)
true && true true (both are true-y)
true && 20 20 (both are true-y)
ブール値でのみ使用する場合、これは数学ロジックのAND演算子です。
&&
演算子チェーンこの演算子が上記のように定義されている理由は、演算子の連鎖です。この演算子をチェーンしても、上記のルールを維持できます。
true && 20 && 0 && 100 0 (it is the first false-y)
10 && 20 && true && 100 100 (last one, since all are true-y)
&&
短絡定義からわかるように、1つの用語がfalse-yであることがわかるとすぐに、次の用語を気にする必要はありません。 Javascriptはこれをさらに一歩進め、用語は評価されません。これは短絡と呼ばれます。
true && false && alert("I am quiet!")
このステートメントは何も警告せず、false
が返されます。したがって、ifステートメントの短い置換として&&
演算子を使用できます。これらは同等です:
if (user.isLoggedIn()) alert("Hello!")
user.isLoggedIn() && alert("Hello!")
ほとんどすべてのJSコンプレッサーは、このトリックを使用して2バイトを節約します。
&
はビット単位の「and」です。これは、2つの数値を2進数に変換した場合、結果は両方の数値が1
を持つ位置に1
数字を持つ数値になることを意味します。
100011 //35
& 111001 //57
---------
100001 //35 & 57 == 33
すべての高尚で詳細な洞察により、4つの連鎖&&のIFステートメント文字列で頭を打つことを解決した実用的な素人の答えは、IF((sessionStorage.myLable!== "LableStringA" )&&(sessionStorage.myLable!== "LableStringB")&&(sessionStorage.myLableZ!== "LableStringA")&&(sessionStorage.myLableZ!== "LableStringB")){...)は実際に解決されました単純に&&の代わりに単一の&を使用することにより、-4の採決されたソリューション(今すぐ下に表示)で、Jake Wayne(およびRuss)に感謝します。私の例のテストでは、優先される!==の代わりに使用した場合、!=も機能します。