ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript の NaN

JavaScript の NaN

hzc
hzc転載
2020-06-29 10:42:462995ブラウズ
  1. NaNとは
  2. #NaNが返されるのはいつになるか
  3. Judge NaN
  4. 参考
NaN とは

#これについては、MDN の NaN 記事で説明されています:

グローバル属性 NaN は、Not-A-Number の値を表します。
  • NaN はグローバル オブジェクトのプロパティです。
  • NaN 属性の初期値は NaN で、Number.NaN の値と同じです。
  • ES5 では、NaN 属性は構成不可、書き込み不可の属性です。ただし、ES3 では、このプロパティの値は変更できますが、上書きは避けてください。
  • は通常、計算が失敗した場合 (例:
  • Math.sqrt(-1)
  • )、または文字列を数値に解析しようとして失敗した場合に、Math メソッドの戻り値として表示されます。 (例: parseInt("blabla"))。
NaN
typeof NaN   // "number"

の型。つまり、

NaN

は特別な Number 型の値です。 NaN はいつ返されますか?

JavaScript の権威あるガイドには、「3.1.3 JavaScript の算術演算」の章に次の説明があります。無限大の場合、負の数値の平方根を取るか、数値ではないオペランドまたは数値に変換できない算術演算子を使用すると、

NaN

が返されます。

# は、次の状況として個別に解釈できます。

無限大を無限大で割る

負の数に対して平方根演算を実行します

数値ではない、または数値に変換できないオペランドで使用される算術演算子
  • 文字列を数値に解析します
  • 次の結果はすべて
  • NaN
  • です:
  • Infinity / Infinity;   // 无穷大除以无穷大
    Math.sqrt(-1);         // 给任意负数做开方运算
    'a' - 1;               // 算数运算符与不是数字或无法转换为数字的操作数一起使用
    'a' * 1;
    'a' / 1;
    parseInt('a');         // 字符串解析成数字
    parseFloat('a');
  • ここでいう「数値化できない操作」とは一体何なのでしょうか?

まず、数値に変換できる演算の次の例を見てみましょう: <pre class="brush:php;toolbar:false">Math.sqrt('4');        // 2 2 * '2';               // 4 '4' / 2;               // 2</pre>数値に変換できない演算

これには、JavaScript の

型変換が含まれます。 ### コンセプト。

JavaScript 決定版ガイドの「3.8 型変換」の章では次のように説明されています。

JavaScript が数値を予期している場合、指定された値を数値に変換します (変換結果が無意味な場合は、 NaN を返します)。

Number()

メソッドを使用して、明示的な型変換を行うことができます。たとえば、次のようになります。
Number('1');           // 1
Number(null);          // 0
Number('a');           // NaN

単項演算子を使用することもできます

暗黙的な型変換を行う場合 数式変換を行う場合、例:

+'1';                  // 1
+null;                 // 0
+'a';                  // NaN
グローバル関数 parseInt() および

parseFloat() を使用して整数を解析し、浮動小数点数、たとえば:

parseInt('12');        // 12
parseInt('12a');       // 12
parseInt('a12');       // NaN
parseInt(null);        // NaN

parseInt() および parseFloat() は、単純に次のように理解できます:

次のように解析します。可能な限り多くの数字を使用し、次の内容を無視します。スペース以外の文字が数字以外の場合、NaN

Number() であることに注意してください。

parseInt()``parseFloat ()

null
など、一部の入力値は異なる方法で処理されます。

次の表に示すように、非数値型は数値型に変換されます: Value

Number

未定義NaNnull0##true false"" (空の文字列)"1.2" (空ではありません、数字)"1" (空ではありません、数値ではありません)[] (任意のオブジェクト)[9​​] (数値要素)['a'] (その他の配列)function(){} (任意の関数)NaN の判定方法最初のグローバル この関数は、入力値が NaN であるかどうかを厳密に判断できません。
1
0
0
1.2
NaN
0
9
NaN
NaN
isNaN( )

isNaN() の奇妙な動作

MDN の isNaN() の記事では、非数値によって示される「奇妙な動作」について説明しています。パラメータ 説明:

このパラメータを数値に変換し、変換結果が NaN

であるかどうかを判定します。

したがって、有効な値に強制できる
NaN

以外の値に対して false 値を返すと混乱を招く可能性があります。

次の例:

isNaN('37');      // false: 可以被转换成数值 37
isNaN('');        // false: 空字符串被转换成 0
NaN を厳密に判定するMDN の Number.isNaN() の Polyfill コードを参照してください:
typeof value === 'number' && isNaN(value)

推奨チュートリアル: 「

JS チュートリアル

以上がJavaScript の NaNの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjianshu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。