他の人の JS コードを見てこの使用方法を発見しました:
if (!!item.value) { param[item.name] = item.value; }
長い間 js を勉強していなかったので、すぐに追加しましたそしてとても面白いものを見つけました。
推奨学習チュートリアル: javascript ビデオ チュートリアル
js での ! の使用法は比較的柔軟であり、実行に加えてよく使用されます。論理演算!タイプ判定に使える!上記のオブジェクトを使用して、ブール値
1,! を取得します。 変数はブール型に変換でき、null、未定義、空文字列の否定がtrue、それ以外がfalseとなります。
2、! ! は型判定によく使われます。最初のステップ! (変数) の後に、論理否定演算が実行されます。js の初心者はよくこのような肥大化したコードを書きます。
変数 a が null でなく、未定義であるかどうかを判定するまたは、メソッド本体の内容は、空の文字列でない場合にのみ実行できます。
!null=true !undefined=true !''=true !100=false !'abc'=false
実際には、判定式
var a; if(a!=null&&typeof(a)!=undefined&&a!=''){ //a有内容才执行的代码 }
を記述するだけで、上記と同じ効果が得られます。 a が実際の意味を持つ変数である場合にのみ、メソッドが実行されます。それ以外の場合、変数 null、未定義、および '' "空の文字列では、次のコードは実行されません。
要約すると、「!」となります。 " は論理 AND 演算であり、任意の変数と論理 AND してブール値に変換できます。 "!!" は論理 AND の否定演算であり、特に後者のコードは型を判断する際にシンプルかつ効率的であり、型を判断する必要がありません。複数回 null、未定義、空文字列を判定するための冗長コード
つまり、冒頭のコード !!value では、まず値を反転したブール値に変換し、得られたブール値を再度反転します。 value の値が null、未定義、または空の文字列の場合、if 本体のコードは実行されないことを保証するためです。
(!(~ []) {})[--[~ ""][ []]*[~ []] ~~! []] ({} [])[[~! []] * ~ []]上記の js の結果を出力します、えっと…? ? ? ??...抜け出してください...
以上がJS における ! と!! の違いと使い方を学びましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。