三、javascriptのNaNとisNaNについて()

2575 ワード

本記事の内容:
  • NaNとNaNが発生するシーン
  • isNan()方法について
  • シシシシシナとは何ですか?NaN(Not a Number)は、本来返すべき数値の操作数が戻り値の場合を示す特殊な数値です.javascriptでは、整数と浮動小数点を総称してNumberタイプと呼びます.この他にNumberタイプにはNaNという特殊な値があります.対象のNumberの静的な属性です.Number.NaNを通じてアクセスできます.
    NaN自体は2つの異常な特徴があります.
  • NaNに関する動作(例えばNaN/10)はいずれもNaNに戻ります.この特徴は多くの不計算において問題を引き起こす可能性があります.
  • NaNは、NaN自体を含むいかなる値とも等しくない.
  • 萼33859;菟33759;はNaNを発生する二つのシーン:33859;菟菗啣啱1、表式は一つの表式の中にマイナス記号(-)、乗算記号があると計算します.✖)、または除号(➗)などの演算子の場合、JSエンジンは計算前に式の各項目をNumberタイプに変換し、Number()を使って変換します.変換に失敗したらNaNに戻ります.
    100 - '1a'; // NaN
    '100' / '10a'; // NaN
    '10a' * 5; //NaN
    undefined - 1; //NaN ===> Number(undefined) NaN
    [] * 10; // 0, ====> Number([]) = 0
    null - 5; // -5 ====> Number(null) = 0
    
     
    ((zhi i i 2、タイプ変換は直接パーrseInt、parseFloatまたはNumberを使用して、数値に対する値を数値に変換すると、表式はNaNに戻ります.
    'abc' - 1; // NaN
    parseInt('abc'); // NaN
    parseFloat('abc'); // NaN
    Number('abc'); //NaN
    
     
    数字+文字の値に対しては、変換結果が異なります.
    Number('123abc'); // NaN
    parseInt('123abc'); // 123
    parseInt('123abc45'); // 123
    parseFloat('123.45abc'); // 123.45
    Numberが変換されるのは、一部の値ではなく、ParseIntとParseFloatが最初の無効な文字の前の文字列だけに変換されます.また、元のオペレータもNumberと同じ役割を果たすことができます.
    +'123abc'; // NaN
    +'123'; // 123
    +'123.78'; // 123.78
    +'abc'; // NaN
    ((zhi i i i i i i i isNaN)は全体的な方法であり、その役割はNumber()によって成功的に転換できるかどうかの差があります.もし変換が成功すればfalseに戻ります.そうでなければtrueに戻ります.
    isNaN(NaN); // true    Number()  ,     true
    isNaN('123'); // false   Number()    ,  IsNaN      false
    isNaN('123abc'); // true
    isNaN('123.45ab'); // true
    上から見て、isNaN()方法は一つの値がNaNであるかどうかを判断できません.もしある値がNaNであるかどうかを判断するなら、NaNを利用することは自身の特殊な性質に等しくないです.
    function selfIsNaN(num) {
        return value != value
    }
    
     
    しかし、es 6においては、NumberオブジェクトにもisNaN()の方法が提供されており、グローバルisNaN()とは異なり、ある値自体がNaNであるかどうかを判断するために使用され、類型変換は不要である.
    Number.isNaN('123'); // false,     NaN
    Number.isNaN('abc'); // false,     NaN
    Number.isNaN(NaN); // true,