web関連

【javascript】ブロックスコープでの変数宣言「var」と「let」の違い

if文やfor文などで使われる「{}(波括弧)」はブロックスコープと呼ばれるもので、varを使った時とletを使った時の違いについての備忘録

ブロックスコープとは

es6(ES2015)から追加された概念
varを使って変数を宣言するなら無視してok
letconstを使うことでブロックスコープ(ローカルスコープ)として機能する

以下、具体例

for文(ブロックスコープ)を使った例

varを使った場合

for (var i = 0; i < 5; i++) {
    console.log(i); // -> 0, 1, 2, 3, 4
}
console.log(i);// 5

ブロックスコープ外で変数にアクセスできてしまう

letを使った場合

for (let i = 0; i < 5; i++) {
    console.log(i); // -> 0, 1, 2, 3, 4
}
console.log(i);// Uncaught ReferenceError: i is not defined

ブロックスコープ外ではアクセスできない

if文を使った例

varを使った場合

var boolean = true;
if(boolean){
	var a = 'block';
}
console.log(a);// 出力:block

letを使った場合

var boolean = true;
if(boolean){
	let a = 'block';// ブロックスコープとして宣言
}
console.log(a);// Uncaught ReferenceError: a is not defined

まとめ

{}(波括弧)で囲まれた(※function(){…}を除く)ものはletconstで変数を宣言することでブロックスコープ(ローカルスコープ)として機能をする

要はブロックスコープとはvarを使うなら無視してもよいものだが、letやconstを使うのであれば理解していないと思わぬエラーにあうから注意したほうがいい概念

Leave a Comment

入力エリアすべてが必須項目です。メールアドレスが公開されることはありません。

内容をご確認の上、送信してください。