数値リテラル
構文の説明
JavaScriptにおけるリテラルの意味
| 用語 | 辞書的な意味 | プログラミング上の意味 |
|---|---|---|
| リテラル (literal) | 文字どおりの、そのままの | プログラム中に直接記述された固定値 |
console.log(100); //100がリテラル(数値リテラル)
リテラルの種類
| リテラルの種類 | 型 | 例 |
|---|---|---|
| 数値リテラル | number | 10、-50 |
| 文字列リテラル | string | "hello"、"10" |
| 真偽値リテラル | boolean | true、false |
| nullリテラル | object | null |
| undefinedリテラル | undefined | undefined |
数値リテラルの種類
| 種類 | 接頭辞 | 値の例 | 10進数での値 |
|---|---|---|---|
| 10進数 | 123 | 123 | |
| 2進数 | 0b | 0b1010 | 10 |
| 8進数 | 0o | 0o755 | 493 |
| 16進数 | 0x | 0xFF | 255 |
例題
次のコードをコンソールでどのように表示されるか確認してみましょう。
console.log(10);
10
console.log(typeof リテラル);でそのリテラルの型が確認できます。
console.log(typeof 10); //出力結果:number
問題
次のコードをコンソールでどのように表示されるか確認してみましょう。
console.log(100);
100
console.log(3.14);
3.14
console.log(-50);
-50
console.log(0b101011);
43
接頭辞0bを付けると2進数として扱われます。
console.log(0xffff);
65535
接頭辞0xを付けると16進数として扱われます。
console.log(0o777);
511
接頭辞0oを付けると8進数として扱われます。
console.log(0o888);
SyntaxError
接頭辞0oをつけると、その数値は8進数として扱われます。
8進数では 0〜7 までしか使用できないため、それ以外の数字を含めるとSyntaxError(構文エラー)となります。
同様に以下の場合でも構文エラーとなります。
console.log(1.2.3); //10進数で小数点を2つ以上使用 console.log(1000F); //10進数で0~9以外を使用 console.log(0b102); //2進数で0、1以外を使用 console.log(0xF1G); //16進数で0~F以外を使用
console.log(1_000_000);
1000000
_(アンダースコア)は桁区切りとして使用できます。
3桁区切りに限らず、任意の位置で区切ることができます(ただし一般的な使い方ではありません)
console.log(1_0_0_0); //出力結果:1000
console.log(9007199254740991); console.log(9007199254740992); console.log(9007199254740993); console.log(9007199254740994); console.log(9007199254740995);
9007199254740991
9007199254740992
9007199254740992
9007199254740994
9007199254740996
数値(Number)で扱える限界は9007199254740991です。これを超えると数値を正確に表現できなくなります。
9007199254740991を超える大きな整数を扱うときは、BigIntを使います。
console.log(9007199254740992n); console.log(9007199254740993n); console.log(9007199254740994n); console.log(9007199254740995n);
9007199254740992n
9007199254740993n
9007199254740994n
9007199254740995n
9007199254740991を超える大きな整数を扱うときは、接尾辞nを付けることでBigIntとして扱うことができます。数値型では正確に表現できない大きな値(整数)も扱えます。
ただし、数値型と型が異なるため、数値型とBigInt型を混ぜて計算できません。
console.log(typeof 9007199254740992n); //出力結果:bigint console.log(3.14n); //SyntaxError(BigIntは整数のみ扱えるため、小数は使用不可) console.log(10 + 10); //出力結果:20 console.log(10n + 10); //TypeError(BigIntとNumberは混在できない)
