【Javascript】変数のスコープが気になった

アプリ開発

気になった。

var

グローバル変数になる。

どこからでもアクセス出来る。

var test = 'hoge';
function onLoad() {
  console.log(test); // 'hoge'
}

過去の遺産なので、使用は極力避けたい。

let

プライベート変数になる。

ブロック単位でしかアクセス出来ない。

var test1 = 'hoge1';
let test2 = 'hoge2';
function onLoad() {
  var test3 = 'hoge3';
  let test4 = 'hoge4';
  console.log(test1); // 'hoge1'
  console.log(test2); // 'hoge2'
  console.log(test3); // 'hoge3'
  console.log(test4); // 'hoge4'
}
console.log(test3); // 'hoge3'
console.log(test4); // アクセス出来ない

const

再代入不可能なプライベート変数になる。

function onLoad() {
  const test = 'hoge1';
  test = 'hoge2'; // エラー
}
console.log(test); // アクセス出来ない

参考サイト

var/let/constの使い分けのメモ - Qiita
グローバルスコープ トップレベルに変数や関数を置くと、それはどこからでもアクセスできるグローバルオブジェクトになる 別のJSファイルに書いたとしても、同様にグローバル扱いになる 関数スコープ functionの中に書...
タイトルとURLをコピーしました