環境
MacBook Pro (2.3 GHz 8コアIntel Core i9)
macOS 14.0(23A344)
Homebrew 4.3.8
gh 2.52.0
目次
データ型
JavaScriptは動的型付け言語に分類される言語であるため、静的型付け言語のような変数の型はありません。しかし、文字列、数値、真偽値といった値の型は存在します。これらの値の型のことをデータ型と呼びます。
プリミティブ型
プリミティブ型(基本型)は、真偽値や数値などの基本的な値の型のことです。 プリミティブ型の値は、一度作成したらその値自体を変更できないというイミュータブル(immutable)の特性を持ちます。
型 | 例 |
---|---|
真偽値(Boolean) |
true 、false
|
数値(Number) |
123 、1.234
|
巨大な整数(BigInt) | 9007199254740992n |
文字列(String) | "JavaScript" |
undefined | 値が未定義であること意味するデータ型 |
null | 値が存在しないことを意味するデータ型 |
シンボル(Symbol) | 一意で不変な値のデータ型 |
console.log(typeof true);// => "boolean"
console.log(typeof 42); // => "number"
console.log(typeof 9007199254740992n); // => "bigint"
console.log(typeof "JavaScript"); // => "string"
console.log(typeof Symbol("シンボル"));// => "symbol"
console.log(typeof undefined); // => "undefined"
console.log(typeof null); // => "object"
オブジェクト
プリミティブ型ではないものをオブジェクト(複合型)と呼び、 オブジェクトは複数のプリミティブ型の値またはオブジェクトからなる集合です。 オブジェクトは、一度作成した後もその値自体を変更できるためミュータブル(mutable)の特性を持ちます。 オブジェクトは、値そのものではなく値への参照を経由して操作されるため、参照型のデータとも言います。
型 | 例 |
---|---|
オブジェクト | {name1 = "Alpha", name2 = "Beta"} |
配列 | ["Alpha", "Beta"] |
関数 | function () {}; |
クラス | |
正規表現 | |
Date |
console.log(typeof { name1 = "Alpha", name2 = "Beta" }); // => "object"
console.log(typeof [ "Alpha", "Beta" ]); // => "object"
console.log(typeof function () {}); // => "function"
リテラル
プリミティブ型の値や一部のオブジェクトは、リテラルを使うことで簡単に定義できるようになっています。
リテラルとはプログラム上で数値や文字列など、データ型の値を直接記述できるように構文として定義されたものです。 たとえば、"
と"
で囲んだ範囲が文字列リテラルで、これは文字列型のデータを表現しています。
プリミティブ型
真偽値(Boolean)
- 真偽値には、
true
とfalse
のリテラルがあります。true; // => true false; // => false
数値(Number)
- 数値には、
42
のような整数リテラルと3.14159
のような浮動小数点数リテラルがあります。- 整数リテラル
console.log(1); // => 1 console.log(10); // => 10 console.log(255); // => 255
- 浮動小数点数リテラル
.123; // => 0.123
巨大な整数(BigInt)
- ES2020ではBigIntという新しい整数型のデータ型とリテラルが追加されました。
- BigIntでは2^53-1(9007199254740991)よりも大きな整数を正しく表現できます。
- BigIntリテラルは、数値の後ろにnをつけます。
console.log(1n); // => 1n // 2^53-1より大きな値も扱える console.log(9007199254740992n); // => 9007199254740992n
文字列(String)
null
- nullリテラルはnull値を返すリテラルです。
- nullは「値がない」ということを表現する値です。
foo;// "ReferenceError: foo is not defined" const foo = null; console.log(foo); // => null