Number() コンストラクター
Baseline
広く利用可能
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。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
仕様書
| 仕様書 |
|---|
| ECMAScript® 2027 Language Specification> # sec-number-constructor> |
ブラウザーの互換性
ブラウザー互換性一覧表を表示するには、JavaScript を有効にしてください。