とりあえず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
の方がメンテナンス性が高いのです。)