「JavaScript/Global」の版間の差分

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
→‎数値処理関数: <syntaxhighlight lang="javascript"> ほか
Ef3 (トーク | 投稿記録)
→‎数値処理関数: Fix </syntaxhighlight>; Numberの同名のメソッドとの比較を加筆。
79 行
 
=== 数値処理関数 ===
グローバルオブジェクトのメソッドは、いくつかの数値処理関数を標準で用意している。
これらは、Numberオブジェクトのメソッドの別名である場合と、機能的に近いものの挙動が違うものがあるので利用にあたっては注意が必要である。
 
==== parseInt(string , radix) ====
与えられた文字列を、先頭から解釈して整数に変換する。第2引数では、何進法とみなして変換を行うのかを指定する。
規格上、第2引数は省略した場合 0x で始まる16進法表記以外は10進法とみなして自動で変換を行っている。
Number.parseInt()の別名。
<syntaxhighlight lang="javascript">
document.write( parseInt('10') ); // 10を表示
document.write( parseInt('10', 8 ) ); // 8を表示; 8進法として解釈、8を表示
document.write( parseInt('0x10') ); // 16を表示; 0xで始まる場合は16進数として解釈。16を返す
document.write( parseInt('0177') ); // 177を表示; 0で始まる場合も10進数として解釈。177を返す ※ES5 0を前置する8進数表現は ES3 で非推奨、ES5で廃止
document.write( parseInt('0o77') ); // 0を表示; 0oで始まる場合も10進数として解釈。0を返す
document.write( parseInt('0b10') ); // 0を表示; 0bで始まる場合も10進数として解釈。0を返す
document.write( parseInt('ZERO') ); // 例外にならず NaN を表示; 1文字も数値として解釈できない。 例外ではなく NaN を返す
document.write( parseInt('3_14') ); // 3 を表示; _ を区切り文字とする記法には対応しない。3 を返す
document.write( Number.parseInt === parseInt ); // Number.parseInt の別名。true を表示
</nowiki>
</syntaxhighlight>
 
==== parseFloat(string) ====
与えられた文字列を、JavaScriptのNumber型のオブジェクトに変換する。
Number.parseFloat() の別名。
<syntaxhighlight lang="javascript">
document.write( parseFloat('10') ); // 10が表示
document.write( parseFloat('10.00') ); // 10が表示
document.write( parseFloat('0x10') ); // 16進数としては評価されない。最初の数字の「0」まで表示
document.write( parseFloat('10e+4') ); // 1000表示される
document.write( parseFloat('10E-3') ); // 0.01表示される
document.write( parseFloat('Infinity') ); // Infinity表示される
document.write( parseFloat('-Infinity') );// -Infinity表示される
document.write( parseFloat('NaN') ); // NaN表示される
document.write( parseFloat('Text') ); // NaN表示される
document.write( parseFloat('9n') );   // 99表示される
document.write( typeof parseFloat('9n') );// bigint でなく number 表示される
document.write( typeof eval('9n') ); // bigint 表示される
document.write( Number.parseFloat === parseFloat ); // Number.parseFloat の別名。true を表示
</syntaxhighlight>
 
==== isNaN(number) ====
引数の値がNaN(Not-a-Number)であればtrueを、それ以外はfalseを返す表示
Number.isNaN() とは動作が異なる。
<syntaxhighlight lang="javascript">
document.write( isNaN(NaN) ); // true表示
document.write( isNaN(Math.sqrt(-1)) ); // true表示
document.write( isNaN(Math.sqrt( Infinity/Infinity )) ); // true表示
document.write( Number.isNaN === isNaN ); // falseを表示; Number.isNaN ではない
document.write( isNaN("NaN") ); // trueを表示; Stringからnumberに型変換され評価
document.write( Number.isNaN("NaN") ); // falseを表示; number でなければ false と即断
</syntaxhighlight>
 
==== isFinite(number) ====
渡された値が有限数かどうかを判定する(Finiteは英語で「有限な」)。
正あるいは負の Infinity か NaN か undefined の時 false を返し、それ以外は true を返す表示
Number.isFinite() とは動作が異なる。
<syntaxhighlight lang="javascript">
document.write( isFinite(Infinity) ); // falseを表示
document.write( isFinite(100) ); // trueを表示
document.write( Number.isFinite(null) ); === isFinite );// truefalseを表示 isFinite は Number.isFinite の別名ではない
document.write( Number.isFinite(null) ); // falsetrueを表示 isFinite は Number.isFinite の別名ではないStringからnumberに型変換され評価
document.write( Number.isFinite(null) );// falseを表示; number でなければ false と即断
document.write( isFinite("Infinity") ); // falseを表示; Stringからnumberに型変換され評価
</syntaxhighlight>