[Go to site: main page, start]

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

View in English Always switch to English

Number() コンストラクター

Baseline 広く利用可能

この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。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

仕様書

仕様書
ECMAScript® 2027 Language Specification
# sec-number-constructor

ブラウザーの互換性

関連情報