1. ホーム
  2. javascript

[解決済み] チルダではない)~は、どのようにArrayメソッド呼び出しの結果を変更するのですか?

2023-01-20 17:32:05

質問

のコメントを読むと、jQueryの inArray ページ ここで には、興味深い宣言があります。

!!~jQuery.inArray(elm, arr) 

さて、二重感嘆符は、結果をタイプに変換すると思います。 boolean という値で true . 私が理解していないのは、チルダ( ~ ) 演算子を使用することでしょうか?

var arr = ["one", "two", "three"];
if (jQuery.inArray("one", arr) > -1) { alert("Found"); }

をリファクタリングして if ステートメントをリファクタリングしています。

if (!!~jQuery.inArray("one", arr)) { alert("Found"); }

内訳です。

jQuery.inArray("one", arr)     // 0
~jQuery.inArray("one", arr)    // -1 (why?)
!~jQuery.inArray("one", arr)   // false
!!~jQuery.inArray("one", arr)  // true

また、チルダを前に置くと、結果が -2 .

~!!~jQuery.inArray("one", arr) // -2

私はここでのチルドの目的を理解していません。 誰かがそれを説明するか、リソースに私を導くことができますか?

どのように解決するのですか?

チルダ演算子は実はjQueryの一部ではありません。JavaScript自体のビット単位のNOT演算子なのです。

参照 チルダ(~)の大いなる謎 .

あなたの実験で奇妙な数値が得られるのは、整数(私の知る限り、2の補数かそのようなものとして保存されているかもしれません)に対してビット単位の論理演算を実行しているからです。

2 の補数 は、2進数で数字を表現する方法を説明しています。正解だったようです。