Number() コンストラクター

Number() コンストラクターは、 Number オブジェクトを生成します。関数として呼び出された場合は、数値型のプリミティブ値を返します。

構文

js
new Number(value)
Number(value)

メモ: Number()new を付けてもつけなくても呼び出せますが、効果は異なります。返値を参照してください。

引数

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

関連情報