[解決済み] トリプルエクスクラメーションマークの使用
2023-07-02 19:51:37
質問
あるプロジェクトのソースコードを見ていたら、条件文の中で感嘆符を3つ使っている箇所がいくつかありました。
if (!!!someVar) {
// ...
}
さて、これはめったに使われない演算子というわけではなく、3つの否定を並べただけのものであることは理解しています。
!(!(!someVar)))
. 私の考えでは、これは感嘆符1つで置き換えるのが安全だと思います。以下は、以下のようなケースを見つけようとしたものです。
!!!a
と等しくない場合を探してみました。
!a
(となっています(google chrome consoleからそのまま引用)。
var a = ''
""
!!!a === !a
true
a = 'string'
"string"
!!!a === !a
true
a = null
null
!!!a === !a
true
a = 12
12
!!!a === !a
true
a = {b: 1}
Object {b: 1}
!!!a.c === !a.c // a.c is undefined here
true
a = []
[]
!!!a === !a
true
a = [1,2]
[1, 2]
!!!a === !a
true
私は何か珍しい(あるいは明白な)ケースを見逃しているのでしょうか?
どのように解決するのですか?
の間に違いはありません。
!a
と
!!!a
であることから
!!!a
は単に
!!(!a)
で、なぜなら
!a
はブーリアンである。
!!(!a)
はその二重否定に過ぎず、したがって同じである。
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] JavaScriptで現在のURLを取得する?
-
[解決済み】関数の前のエクスクラメーションマークは何をするのですか?
-
[解決済み] JavaScriptを使用してHTML要素に属性を追加/更新するには?
-
[解決済み] React js 親コンポーネントから子コンポーネントの状態を変更する
-
[解決済み] jQueryの$という記号の意味は何ですか?
-
[解決済み] AngularJS - ngRepeatフィルタリングされた結果の参照を取得する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] JavaScriptで文字列をbooleanに変換するにはどうしたらいいですか?
-
[解決済み] ジェスト あるクラスの特定のメソッドをモックする方法
-
[解決済み] CORS OriginヘッダーとCSRFトークンによるCSRF保護
-
[解決済み] JavaScriptで文字列を数値に変換する最速の方法は何ですか?
-
[解決済み] JavaScript のオブジェクトの配列を比較し、最小値/最大値を取得する
-
[解決済み] Prototypeを使ってtextareaを自動サイズ調整するには?
-
[解決済み] JavaScript で `throw` の後に `return` をする必要がありますか?
-
[解決済み] JavaScript で css プロパティを使用して HTML 要素の背景色を設定する方法
-
[解決済み] javascriptのキャンバスで画像をリサイズする (スムーズ)