Number() コンストラクター
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
Number()
コンストラクターは、 Number
オブジェクトを生成します。関数として呼び出された場合は、数値型のプリミティブ値を返します。
構文
js
new Number(value)
Number(value)
引数
value
-
作成するオブジェクトの数値です。
返値
Number()
が関数として(new
)呼び出された場合、引数を数値プリミティブに変換します。特に、長整数 (BigInt) の値は例外が発生させずに数値へ変換します。 value
が存在しない場合は 0
になります。
Number()
がコンストラクターとして(new
付きで)呼び出された場合は、上記の型変換処理を行ったうえで、 Number
オブジェクトにラッピングして返します。これはプリミティブではありません。
警告:
コンストラクターとして 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® 2026 Language Specification> # sec-number-constructor> |
ブラウザーの互換性
Loading…