Number() コンストラクター
Number()
コンストラクターは、 Number
オブジェクトを生成します。関数として呼び出された場合は、数値型のプリミティブ値を返します。
構文
引数
value
-
作成するオブジェクトの数値です。
返値
Number
がコンストラクターとして(new
付きで)呼び出された場合は、Number
オブジェクトを作成します。これはプリミティブではありません。
Number
が関数として呼び出された場合、引数を数値プリミティブに変換します。長整数 (BigInt) は数値へ変換されます。値が変換できない場合は、NaN
を返します。
警告: コンストラクターとして Number
を使用することはほとんどないはずです。
例
Number オブジェクトの生成
js
const a = new Number("123"); // a === 123 は false
const b = Number("123"); // b === 123 は true
a instanceof Number; // は true
b instanceof Number; // は false
typeof a; // "object"
typeof b; // "number"
Number() を使用して長整数を数値へ変換
Number()
は、とても明示的なので、例外を発生させずに長整数 (BigInt) を数値に変換することができる唯一のケースです。
js
+1n; // TypeError: Cannot convert a BigInt value to a number
0 + 1n; // TypeError: Cannot mix BigInt and other types, use explicit conversions
js
Number(1n); // 1
なお、長整数が安全に表現するのに長すぎる場合、精度が下がることがあります。
js
BigInt(Number(2n ** 54n + 1n)) === 2n ** 54n + 1n; // false
仕様書
Specification |
---|
ECMAScript Language Specification # sec-number-constructor |
ブラウザーの互換性
BCD tables only load in the browser
関連情報
- 現在の
Number
の動作(2 進数と 8 進数のリテラルの対応あり)のポリフィル (core-js
) NaN
Math
グローバルオブジェクト- 可変精度の整数:
BigInt