JavaScriptプログラミング:Number.numberとは? プロパティとコンストラクターを理解して使いこなそう
Number オブジェクトのプロパティ「number」
まず、Numberオブジェクトには、その型を表すプロパティ「number」が存在します。これは、プリミティブな数値型であることを示す特別なプロパティで、他のオブジェクトとは区別するために用意されています。
console.log(typeof 10); // number
console.log(typeof Number(10)); // number
console.log(Number.number); // true
console.log(typeof {}); // object
console.log(typeof Number({})); // object
console.log(Number({}).number); // true
Numberコンストラクターの戻り値
一方、「Number.number」は、Numberコンストラクターを呼び出した際の戻り値を表現する場合にも使われます。Numberコンストラクターは、様々な値を数値に変換するために用いられます。
console.log(Number(10)); // 10 (数値に変換)
console.log(Number('10')); // 10 (文字列を数値に変換)
console.log(Number(true)); // 1 (真を数値に変換)
console.log(Number(false)); // 0 (偽を数値に変換)
console.typeof(Number(10)); // number
このように、「Number.number」は、文脈によって異なる2つの意味を持ちます。
- Numberコンストラクターの戻り値
引数を数値に変換した結果 - Numberオブジェクトのプロパティ「number」
プリミティブな数値型であることを示すプロパティ
理解を深めるために、以下の点にも留意しておきましょう。
- Numberコンストラクターは、あくまでも値を数値に変換するものであり、数値以外のオブジェクトを作成するものではありません。
- Numberオブジェクト自体は数値ではなく、数値を扱うための様々な機能を提供するオブジェクトです。
// プリミティブな数値型であることを確認
console.log(typeof 10 === Number.number); // true
console.log(typeof 3.14 === Number.number); // true
// オブジェクトとの比較
console.log(typeof {} === Number.number); // false
console.log(typeof '' === Number.number); // false
Numberコンストラクターで様々な値を数値に変換する
// 文字列を数値に変換
console.log(Number('100')); // 100
console.log(Number('1.5')); // 1.5
// 論理値を数値に変換
console.log(Number(true)); // 1
console.log(Number(false)); // 0
// その他の値を数値に変換 (NaNになる場合もある)
console.log(Number('Hello')); // NaN
console.log(Number(undefined)); // NaN
console.log(Number(Infinity)); // Infinity
// 変換結果が数値かどうか確認
console.log(typeof Number(10) === Number.number); // true
console.log(typeof Number('10') === Number.number); // true
// 変換結果の型を調べる
console.log(typeof Number(true)); // number
console.log(typeof Number(false)); // number
Numberオブジェクトのプロパティ「number」の代替方法
Numberオブジェクトのプロパティ「number」は、その型を表すために使用されます。このプロパティの代替方法としては、以下の2つが挙げられます。
- typeof 演算子
変数の型を調べるためにtypeof
演算子を使用できます。
const num = 10;
console.log(typeof num === 'number'); // true
- instanceof 演算子
オブジェクトが特定の型のインスタンスかどうかを確認するためにinstanceof
演算子を使用できます。
const num = 10;
console.log(num instanceof Number); // true
Numberコンストラクターの戻り値の代替方法
Numberコンストラクターは、様々な値を数値に変換するために使用されます。このコンストラクターの代替方法としては、以下の3つが挙げられます。
- parseInt() 関数
文字列を整数に変換するために使用できます。
const str = '10';
const num = parseInt(str);
console.log(num); // 10
- parseFloat() 関数
文字列を浮動小数点に変換するために使用できます。
const str = '10.5';
const num = parseFloat(str);
console.log(num); // 10.5
- 単項プラス演算子 (+)
数値に変換したい値の前に単項プラス演算子 (+) を付けることもできます。
const str = '10';
const num = +str;
console.log(num); // 10
それぞれの代替方法には、それぞれ利点と欠点があります。状況に応じて適切な方法を選択することが重要です。
- オブジェクトの型を厳密にチェックする必要がある場合は、
typeof
またはinstanceof
演算子を使用する必要があります。 - より詳細な制御が必要な場合は、
parseInt()
,parseFloat()
, または単項プラス演算子を使用する方が適切な場合があります。 - より簡潔な記述を求める場合は、
Number()
コンストラクターの使用が一般的です。