[解決済み] JavaScriptで[NaN].includes(NaN)がtrueを返すのはなぜですか?
2022-06-26 17:11:33
質問
私がよく知っているのは
NaN
が JavaScript で "weird" であること、つまり。
NaN === NaN
は常に
false
を返します。
ここで
. ですから
===
をチェックするために、比較のために
NaN
をチェックしますが、代わりに isNaN(...) を使用します。
ということを発見して、私は驚きました。
> [NaN].includes(NaN)
true
これは矛盾しているように思えます。なぜこのような動作になるのでしょうか?
どのように動作するのでしょうか?また
includes
メソッドは特に
isNaN
?
どのように解決するのですか?
によると MDN のドキュメント によると
注:技術的に言えば
includes()
はsameValueZero
アルゴリズムを使用して、与えられた要素が見つかったかどうかを判断します。
const x = NaN, y = NaN;
console.log(x == y); // false -> using ‘loose’ equality
console.log(x === y); // false -> using ‘strict’ equality
console.log([x].indexOf(y)); // -1 (false) -> using ‘strict’ equality
console.log(Object.is(x, y)); // true -> using ‘Same-value’ equality
console.log([x].includes(y)); // true -> using ‘Same-value-zero’ equality
より詳細な説明。
- 同一値ゼロの等価性 と同様 同一値一致 , が、+0 と -0 は等しいとみなされる .
-
同一値一致
が提供されます。
オブジェクト.is()
メソッドによって提供されます。との唯一の違いは
Object.is()
と===
は の符号付きゼロと NaN の処理にあります。
追加のリソース
関連
-
vue for 登録ページ効果 vue for sms 認証コードログイン
-
[解決済み】TypeError: Router.use() はミドルウェアの関数を要求しているが、Object を取得した。
-
フロントエンド null のプロパティ 'disabled' を読み取れない 問題が解決された
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み] 私のJavaScriptコードは "No 'Access-Control-Allow-Origin' header is present on requested resource "というエラーを受け取りますが、Postmanはそうならないのはなぜですか?
-
[解決済み] なぜ ++[[]][+[] +[+[]] は "10" という文字列を返すのでしょうか?
-
[解決済み】IEEE754のNaN値に対して、すべての比較がfalseを返す根拠は何ですか?
-
[解決済み】typeof NaNが'数字'を返すのはなぜ?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
要素ツリー制御によるvueTreeテーブル
-
vue3.0プロジェクトのアーキテクチャを構築するための便利なツール
-
vueのグローバルがscss(mixin)を導入。
-
[解決済み】Node.js getaddrinfo ENOTFOUND
-
[解決済み】ExpressJS : res.redirect()が期待通りに動かない?
-
nodejs unhandledPromiseRejectionWarning メッセージ
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み] [解答】+0と-0は同じですか?
-
[解決済み] Array.prototype.includes vs. Array.prototype.indexOf
-
[解決済み] なぜNaNはNaNと等しくないのですか?[重複あり]