JavaScriptにおける型についての解説
JavaScriptにおける型の概要
JavaScriptは動的型付け言語であり、変数の型を宣言せずに使用できます。そのため、同じ変数が異なる型の値を持つことができます。 しかし、JavaScriptには明確に定義されたデータ型が存在し、それぞれの型に応じた特性や動作があります。
プリミティブ型
JavaScriptには以下の7つのプリミティブ型が存在します:
- Number: 数値を表します。整数や浮動小数点数の区別はありません。
- BigInt: 非常に大きな整数を扱うための型です。
- String: テキストデータを表します。
- Boolean: 真偽値 (
true
またはfalse
) を表します。 - Undefined: 未定義の値を表します。
- Null: 意図的に「値がない」ことを示します。
- Symbol: 一意の識別子を生成するための型です。
Number型の例
let x = 42; // 整数
let y = 3.14; // 浮動小数点数
let z = NaN; // 数値ではない (Not a Number)
BigInt型の例
let bigNumber = 1234567890123456789012345678901234567890n; // nを付ける
String型の例
let greeting = "こんにちは"; // ダブルクォート
let name = 'Hayato'; // シングルクォート
let template = `こんにちは、${name}さん`; // テンプレートリテラル
Boolean型の例
let isJavaScriptFun = true;
let isCold = false;
Undefined型とNull型の例
let undefinedValue; // 宣言はしたが初期化していない
let nullValue = null; // 値が存在しないことを意図的に示す
Symbol型の例
let uniqueId = Symbol("id");
let anotherId = Symbol("id");
console.log(uniqueId === anotherId); // false (一意であるため)
オブジェクト型
プリミティブ型以外のデータ型はすべてオブジェクト型に分類されます。オブジェクト型は複雑なデータ構造を表現するために使用されます。
- Object: キーと値のペアを持つ一般的なデータ構造です。
- Array: 順序付きのデータのコレクションです。
- Function: 実行可能なコードブロックを表します。
- Date: 日付と時刻を表します。
- RegExp: 正規表現パターンを表します。
Objectの例
let person = {
name: "Hayato",
age: 30,
greet: function() {
console.log("こんにちは!");
}
};
person.greet();
Arrayの例
let fruits = ["りんご", "バナナ", "ぶどう"];
console.log(fruits[0]); // "りんご"
Functionの例
function add(a, b) {
return a + b;
}
console.log(add(2, 3)); // 5
Dateの例
let now = new Date();
console.log(now.toISOString());
RegExpの例
let pattern = /[a-z]+/g;
let result = "abc123".match(pattern);
console.log(result); // ["abc"]
型変換
JavaScriptでは、型が自動的に変換される場合があります (暗黙的型変換)。また、明示的に型を変換することも可能です。
暗黙的型変換の例
console.log("5" + 5); // "55" (文字列に変換)
console.log("5" - 3); // 2 (数値に変換)
明示的型変換の例
let num = Number("42");
let str = String(42);
console.log(num, typeof num); // 42 "number"
console.log(str, typeof str); // "42" "string"
typeof演算子
typeof
演算子は、変数の型を判定するために使用されます。
console.log(typeof 42); // "number"
console.log(typeof "こんにちは"); // "string"
console.log(typeof true); // "boolean"
console.log(typeof undefined); // "undefined"
console.log(typeof null); // "object" (これは言語仕様による挙動です)
console.log(typeof Symbol("id")); // "symbol"
console.log(typeof {}); // "object"
結論
JavaScriptの型システムはシンプルでありながら柔軟性があります。型に対する理解を深めることで、コードのバグを減らし、より堅牢なプログラムを作成することができます。