技術のメモ箱

JavaScript/変数とデータ型

変数の宣言

変数の宣言にはletを使う。あらゆる型を再代入できる。
ES5まではvarが使われていたが、ES6からはletが推奨されている。

let hello = "こんにちは";
hello = 1;

定数の宣言にはconstを使う。変数名は小文字のままでよい。

const hello = "こんにちは";

データ型の一覧

JavaScriptで使用可能なデータ型は以下。オブジェクト以外はプリミティブ型。

説明
String文字列
Number整数または浮動小数点数
BigInt任意の大きさの整数値
Boolean真偽値(true/false)
null値が空であることを表す
undefined値が未定義であることを表す
Symbol一意で不変な値
Objectキーと値を対で格納する

プリミティブ型

String

シングルクォート、ダブルクォート、バッククォートのいずれかで囲む。
文字列の連結には+を使う。

let name = "太郎";
window.alert("こんにちは、" + name + "さん");

バッククォートの場合はテンプレートリテラルを使える。

window.alert(`こんにちは、${name}さん`);

Number

整数も浮動小数点数も表現できる。

形式書き方
10進数123、0.5、.5
2進数 0b123
8進数 0o123、0123
16進数0x123

BigInt

数字の末尾にnを付けるとBigInt型を表す。
BigIntはNumberよりも大きな整数を扱える。

console.log(2 ** 53 + 1);       // 9007199254740992
console.log(2n ** 53n + 1n);    // 9007199254740993n

Boolean

falseに変換される値は、false、0、-0、0n、""、null、undefined、NaNの8つ。(falsyな値)
これ以外はtrueに変換される。(truthyな値)


nullとundefined

変数を宣言するときに値を代入しない場合は、undefinedになる。
nullは明示的に設定しなければ変数に設定されることはないが、
undefinedはプログラムによって自動的に設定される。

let variable1;  // undefined
let variable2 = null;

Symbol

オブジェクトのプロパティに設定するための一意の値を生成するときに使う。
ラベルはデバッグ用の目印。

let symbol1 = Symbol("label1");
let symbol2 = Symbol("label2");

let obj = {
  [ symbol1 ] : "value1",
  [ symbol2 ]() { console.log("こんにちは"); }
};

console.log(obj[symbol1]);
obj.[symbol2]();

オブジェクト

オブジェクトは複数のキーと値のペアをまとめて保持することができる。
値にはすべてのデータ型の値が設定可能で、オブジェクトの中にオブジェクトも設定できる。
プロパティの名前が重複した場合はあとに定義したもので上書きされる。

let obj = {
    properties1 : "value1",
    properties2 : "value2",
};

オブジェクトの値の取得や変更を行う書き方は2種類ある。
ブラケット記法の場合はプロパティ名の指定に変数を使うことができる。

console.log(obj.properties1);       // ドット記法
console.log(obj["properties2"]);    // ブラケット記法

オブジェクト内でブラケット記法を使ってプロパティ名の定義をすることもできる。

const keyName = "properties";
let obj = {
    [keyName + "1"] : "value1",
    [keyName + "2"] : "value2",
};

オブジェクトのプロパティを削除するには、delete演算子を使う。

delete obj.properties1;       // ドット記法
delete obj["properties2"];    // ブラケット記法

オブジェクト内に保持する関数のことをメソッドと呼ぶ。

let obj = {
  hello : function() { console.log("こんにちは"); }
};

ES6からは省略記法を使うことができる。

let obj = {
  hello() { console.log("こんにちは"); }
};

メソッドの呼び出しも2種類の書き方で呼び出せる。

obj.hello();       // ドット記法
obj["hello"]();    // ブラケット記法

型変換

変換できない値の場合はNaNになる。
存在しない変数を指定した場合と、BigIntに小数を指定した場合はエラーになる。

変換内容結果
Numberへ変換Number("1")1
Number("hello")NaN
Number(true)1
Number(false)0
Number(null)0
Number(undefined)NaN
Stringへ変換String(1) または toString()"1"
String(.5) または toString()"0.5"
String(true) または toString()"true"
String(false) または toString()"false"
String(null)"null"
String(undefined)"undefined"
nullに対しtoString()エラー
undefinedに対しtoString()エラー
Booleanへ変換Boolean(1)true
Boolean(0)false
Boolean("hello")true
Boolean("")false
Boolean(null)false
Boolean(undefined)false
BigIntへ変換BigInt(20)20n
BigInt(true)1n
pagetop