NaN , isNN ()&数isnam ()
8504 ワード
数型はいくつかの特別な値を持ち、そのうちの一つはNaNです.
この記事では、この特別な値で働くとき、私たちが必要とするもののいくつかを共有するつもりです.
私はあなたが記事に沿ってそれらを見つけるようにコードスニペットを試してお勧めします.
ネーミングは混乱している
をしましょう
したがって、この特別な値を何かのように命名した方が良いでしょう.
The
等高線
変数に格納された値が
値が
ちょっと気をつけましょう.🤔
それは
渡した値が特別な値のどちらかである(または評価する)
しかし、これは明らかに正確ではありません
これについてもう少し詳しく説明しましょう.
代わりに、論理は次のようになります.
渡した値が文字通りの値ならば
幸いなことに、ユーティリティのメソッドが
しかし、それは94.06 %のグローバルサポートを持っていますので、ここで心配することはありません.IEはそれを支持しません、しかし、それはとにかくほとんど行きました.
数のためのポリフィールのカップル.イザナン
これらのポリフィルを書くことは、これらのユーティリティをもう少し理解するのを助けます.
しかし、我々はより単純な解決策を使うことができます
エキストラ
また、
この記事では、この特別な値で働くとき、私たちが必要とするもののいくつかを共有するつもりです.
私はあなたが記事に沿ってそれらを見つけるようにコードスニペットを試してお勧めします.
ネーミングは混乱している
をしましょう
typeof
on NaN
返すものを見るtypeof NaN // "number"
ご覧の通り、それはタイプとして「数」を返しますNaN
実際にnumber
... ちょっと待って!😮したがって、この特別な値を何かのように命名した方が良いでしょう.
The
NaN
特殊な値はnumber
セット.我々が数学的な操作をしようとするとき、それは返されます、そして、それは失敗します.したがって、この場合、NaN
特殊な値が返される.等高線
変数に格納された値が
NaN
, を使う===
または==
演算子はNaN
は、それ自体に等しくない唯一の値です.const x = 10 / "foo"
x === NaN // false
x == NaN // false
NaN !== NaN // true
値が
NaN
値があるならば、我々がテストするのを助けることができる2つの方法がありますNaN
. 組み込みのグローバルユーティリティメソッドを使用できますisNaN()
またはNumber.isNaN()
ユーティリティ.しかし、いつでも使用することをお勧めしますbellowを参照してくださいNumber.isNaN()
の代わりにisNaN()
. 試してみましょうconst y = Math.sqrt(-1)
const z = "bar"
isNaN(y) // true
isNaN(z) // true
isNaN(20) // false
isNaN("55")// false
それはisNaN()
ユーティリティはNaN
文字通り数ではない.ちょっと気をつけましょう.🤔
それは
isNaN()
論理は以下のようになります:渡した値が特別な値のどちらかである(または評価する)
NaN
またはタイプのないものnumber
( typeof x !== "number"
), その後true
"しかし、これは明らかに正確ではありません
typeof NaN === "number"
, それで、それは戻りますtrue
特別な値である(または評価する)何かを渡すだけでNaN
, そしてそれはfalse
値が数値型でない場合.これについてもう少し詳しく説明しましょう.
代わりに、論理は次のようになります.
渡した値が文字通りの値ならば
NaN
リターンtrue
, otherwise return false
"幸いなことに、ユーティリティのメソッドが
isNaN
) これは、const a = 20 / "foo"
const b = "bar"
const c = 35
const d = {}
Number.isNaN(a) // true
Number.isNaN(b) // false
Number.isNaN(c) // false
Number.isNaN(d) // false
この組み込みユーティリティメソッドのブラウザサポートをチェックする場合は、次のようになりますCan I Use: Number.isNaN .しかし、それは94.06 %のグローバルサポートを持っていますので、ここで心配することはありません.IEはそれを支持しません、しかし、それはとにかくほとんど行きました.
数のためのポリフィールのカップル.イザナン
これらのポリフィルを書くことは、これらのユーティリティをもう少し理解するのを助けます.
if(!Number.isNaN) {
Number.isNaN = function(n) {
if( typeof n === "number" ) {
return window.isNaN(n)
}
return false
}
}
したがって、この1つでは、値をフィルタリングし、number
, もしそうならばisNaN
ユーティリティ.しかし、我々はより単純な解決策を使うことができます
NaN
はそれ自体に等しくない.見ましょうif(!Number.isNaN) {
Number.isNaN = function(n) {
return n !== n
}
}
エキストラ
また、
Object.is()
2つの値が同じかどうかを調べるメソッド.コーナーケースもカバーしているので-0 === 0 // true
でなければなりませんfalse
この特定のケースではNaN
平等quirkも.Object.is(NaN, NaN) // true
あなたがより学びたいならばObject.is あなたはこのMDNに行くことができますlink .Reference
この問題について(NaN , isNN ()&数isnam ()), 我々は、より多くの情報をここで見つけました https://dev.to/diegolepore/nan-isnan-number-isnan-15jnテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol