1. ホーム
  2. ジャバスクリプト

[解決済み】チルダが式の前にあるとき、何をするのですか?

2022-04-11 10:58:49

質問

var attr = ~'input,textarea'.indexOf( target.tagName.toLowerCase() )
           ? 'value'
           : 'innerHTML'

回答で見たけど、初めて見た。

どういう意味ですか?

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

~ ビット演算子 オペランドのすべてのビットを反転させます。

例えば、あなたの数字が 1 の場合、その2進数表現は IEEE754のフロート (JavaScriptの数値の扱い方)は...

0011 1111 1111 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000

だから ~ はオペランドを32ビットの整数に変換します(JavaScriptのビット演算子はそうなっています)...。

0000 0000 0000 0000 0000 0000 0000 0001

負の数であれば、2の補数で格納されます。すべてのビットを反転して1を足します。

...そして、そのビットをすべて反転させ...

1111 1111 1111 1111 1111 1111 1111 1110

では、どんな使い方があるのでしょうか?どんな時に使うのでしょうか?

かなり多くの使い道があります。低レベルのものを書いているときは便利です。アプリケーションをプロファイリングしてボトルネックが見つかった場合、ビット単位のトリックを使うことでパフォーマンスを向上させることができます(1つの 可能 を使うことができます。)

また、(一般的に)不明確な トリック を回す indexOf() 's 発見 の戻り値を 真実味のある (を作りながら)。 見つかりませんでした として ファルス と同じように、小数点以下が2倍になってしまうのです。 Math.floor() 正数の場合)。

と言うと 不明 というのは、何に使われているのかがすぐにわからないからです。一般的に、あなたのコードは他の人が読んでも明確に伝わるようにしたいものです。しかし ~ よろしい かっこよく見える しかし、それは一般的に、それ自身のためにあまりにも巧妙である。)

また、JavaScriptに Array.prototype.includes() String.prototype.includes() . これらはブーリアン値を返します。ターゲットプラットフォームがこれをサポートしている場合、文字列や配列の中に値があるかどうかを調べるには、これを使用することをお勧めします。