結局varとletって何が違うの

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

コメントを残す

%d人のブロガーが「いいね」をつけました。