とりあえずletを使うようにと言われてletを使っているそこのあなた!引き続きletを使うように。
スコープの違い
一番大きな違いはスコープの違いです。
varで宣言
const testFunctino = (scope) => {
if (scope === "function") {
var textVar = '関数スコープないなら参照できます。'
console.log(textVar)
}
console.log(textVar)
}
testFunctino('function');
let で宣言したので、スコープ外から参照してもエラーにならずどちらのconsole.logもコンソールに文字が出力されます。
letで宣言
const testFunctino = (scope) => {
if (scope === "block"){
let textLet = 'スコープ内でしか参照できません。'
console.log(textLet) //スコープ内でしか参照できません。と出力される。
}
console.log(textLet) //ここでエラーになる。
}
testFunctino('block')
一つ目のconsole.logは出力されますが、二つ目はletで宣言したスコープの外で参照しようとしているのでエラーになります。
再宣言の違い
var
var textvar = ’varで1回目宣言’;
var textvar = ’varで2回目宣言’;
console.log(textvar)
varで宣言したときは何回も同じ文字列で宣言できます。
let
let textvar = ’letで1回目宣言’;
let textvar = ’letで2回目宣言’;
console.log(textvar)// SyntaxError: Identifier 'textvar' has already been declared
letで宣言したときは同じ文字列では宣言し直すことができません。
varの方が便利じゃね?
と思った人もいるかもしれませんが、varは使いません。この辺のお話はまたいつか。(letの方がメンテナンス性が高いのです。)