このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

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)

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

引数

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

ブラウザーの互換性

関連情報