JavaScriptのスコープ

スコープ

・グローバルスコープ …スクリプト全体から参照できる
・関数スコープ …関数定義の中でのみ参照できる。var
・ブロックスコープ …{ }で囲われた部分(ECMAScript2015より)。let、const


var scope = 'グローバルスコープ';
function kansu() {
    var scope = '関数スコープ';
    return scope;
}


・関数定義の外でvar宣言した変数 →グローバル変数
・関数定義の内でvar宣言した変数 →ローカル変数

命令を使わずに宣言された変数は、すべてグローバル変数となる
→関数スコープ変数を定義するには、必ずvar命令を使用しなければならない

変数宣言

再宣言
○var
×let
×const

再代入
○var
○let
×const

スコープ
var 関数スコープ
let ブロックスコープ
const ブロックスコープ

ホイスティング(変数の巻き上げ)
var undefined
let エラー
const エラー