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 オブジェクトを生成します。関数として呼び出された場合は、数値型のプリミティブ値を返します。

構文

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® 2025 Language Specification
# sec-number-constructor

ブラウザーの互換性

BCD tables only load in the browser

関連情報