JavaScript/変数とデータ型
変数の宣言にはletを使う。あらゆる型を再代入できる。
ES5まではvarが使われていたが、ES6からはletが推奨されている。
let hello = "こんにちは";
hello = 1;
定数の宣言にはconstを使う。変数名は小文字のままでよい。
const hello = "こんにちは";
JavaScriptで使用可能なデータ型は以下。オブジェクト以外はプリミティブ型。
型 | 説明 |
---|---|
String | 文字列 |
Number | 整数または浮動小数点数 |
BigInt | 任意の大きさの整数値 |
Boolean | 真偽値(true/false) |
null | 値が空であることを表す |
undefined | 値が未定義であることを表す |
Symbol | 一意で不変な値 |
Object | キーと値を対で格納する |
シングルクォート、ダブルクォート、バッククォートのいずれかで囲む。
文字列の連結には+を使う。
let name = "太郎";
window.alert("こんにちは、" + name + "さん");
バッククォートの場合はテンプレートリテラルを使える。
window.alert(`こんにちは、${name}さん`);
整数も浮動小数点数も表現できる。
形式 | 書き方 |
---|---|
10進数 | 123、0.5、.5 |
2進数 | 0b123 |
8進数 | 0o123、0123 |
16進数 | 0x123 |
数字の末尾にnを付けるとBigInt型を表す。
BigIntはNumberよりも大きな整数を扱える。
console.log(2 ** 53 + 1); // 9007199254740992
console.log(2n ** 53n + 1n); // 9007199254740993n
falseに変換される値は、false、0、-0、0n、""、null、undefined、NaNの8つ。(falsyな値)
これ以外はtrueに変換される。(truthyな値)
変数を宣言するときに値を代入しない場合は、undefinedになる。
nullは明示的に設定しなければ変数に設定されることはないが、
undefinedはプログラムによって自動的に設定される。
let variable1; // undefined
let variable2 = null;
オブジェクトのプロパティに設定するための一意の値を生成するときに使う。
ラベルはデバッグ用の目印。
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 |