変数の宣言
let を使うと初期値がない変数や値の再代入が可能な変数を宣言できます。
let str = "a";
console.log(str); // 結果 a
// --------------------------------------
let name;
name = "太郎";
console.log(name);
一度、宣言された変数と同じ変数名を定義することはできません。
let str = "a";
let str = "b";
console.log(str);
// 結果
SyntaxError: Identifier 'str' has already been declared
変数をまとめて設定するには、カンマで区切り1行で定義することができます。
let name = "太郎", age = 28
console.log(name);
console.log(age);
定数の宣言
const を使うと定数を宣言できます。一度、宣言された定数に値の再代入することはできません。
const str = "a";
str = "b";
console.log(str);
// 結果
TypeError: Assignment to constant variable.
変数の命名規則
変数名のことを識別子と言う場合もあります。変数の命名規則を無視するとエラーが発生します。
変数の命名規則には次のような物があります。
- 予約語は使用しない
- 1文字目は、アルファベットかアンダースコアかドル記号のいずれかで始める
- 2文字目以降は、アルファベットかアンダースコアかドル記号か数字のいずれかが使用できる
- 大文字と小文字は区別される
var
var は、値の再代入が可能な変数を宣言できます。 var の使い方は let とほとんど同じです。
var には同じ名前の変数を再定義できてしまう為、間違えて変数を二重に定義してしまうミスが生じることがあります。また、変数の巻き上げという意図しない挙動があります。
var を利用するのを避け let や const 利用したほうがよいでしょう。
ブロックスコープ
ブロックの中で宣言された let 変数は宣言されたブロック内でのみ有効になります。
次の場合は、ブロックの外で変数 num を呼び出しているため、エラーになります。
if(true){ let num = 10;}
console.log(num);
// 結果
ReferenceError: num is not defined
次の場合は、同じ変数が宣言されていますが、ブロックの中の num はその中でのみ有効なので、エラーになりません。
let num = 5;
if(true){
let num = 10;
}
console.log(num); # 5