Posted at

letとvarの違い

More than 3 years have passed since last update.

一言で言うと、変数のスコープがブロックスコープか関数スコープかの違いです。

letを使った場合、ブロックレベルで変数のスコープが定義されるため、以下の例のように1,2,1と表示されます。

function f() {

let x = 1;
console.log(x);
{
let x = 2;
console.log(x);
}
console.log(x);
}
f()
// 1
// 2
// 1

varは関数でのスコープのため、以下のように1,2,2と表示されます。

function f() {

var x = 1;
console.log(x);
{
var x = 2;
console.log(x);
}
console.log(x);
}
f()
// 1
// 2
// 2

ES6からはletが使えるため、今後はvarではなく好んでletが使われるようになるかと思います。


参考

パーフェクトJavaScript |Part2 JavaScript言語仕様 - 6章 関数とクロージャ - 6-4 スコープ - 6-4-3 letとブロックスコープ