Number() コンストラクター
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
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® 2025 Language Specification # sec-number-constructor |
ブラウザーの互換性
BCD tables only load in the browser
関連情報
- 現在の
Number
の動作(2 進数と 8 進数のリテラルの対応あり)のポリフィル (core-js
) NaN
Math
グローバルオブジェクト- 可変精度の整数:
BigInt