変数/定数の宣言
// 変数の定義
let 変数名 = 値;
// 定数の定義
const 定数名 = 値;
// 変数の定義(昔からある方)
var 変数名 = 値;
何が違う?
- let: ブロックスコープ
- const: ブロックスコープ
- var: 関数スコープ
if (1 == 1) { // 条件式の判定はtrueなので下記の処理が実行される
// let の宣言
let num1 = 0;
// const の宣言
const num2 = 1;
// var の宣言
var num3 = 2;
}
// 出力
console.log(num1); //=> ブロックスコープの中で宣言されているためエラー
console.log(num2); //=> ブロックスコープの中で宣言されているためエラー
console.log(num3); //=> 2
- let: 再代入できるが、再宣言はできない
- const: 再代入も再宣言もできない
- var: 再代入も再宣言もできる
// 再宣言
let greet = "hello";
let greet = "こんにちは"; //=> エラー
const name = "Mike";
const name = "太郎"; //=> エラー
var age = 12;
var age = 24;
// 出力
console.log(greet); //=> エラー
console.log(name); //=> エラー
console.log(age); //=> 24
// 宣言
let myName = "太郎";
const age = 10;
var money = 1200;
// 再代入
myName = "次郎";
age = 100; //=> エラー
money = 0;
// 出力
console.log(myName);
console.log(age); //=> エラー
console.log(money);
使うのは基本的にconst、再代入が必要ならlet。
varは予期しないバグやエラーの原因となるため、使わないようにしましょう。
参考記事