変数の宣言
JavaScriptでは変数の宣言はvar,let,constで行う
ただし、varについては以下の理由で使用が控えられている
1.再宣言が可能
一度宣言した変数と同じ変数名で再度宣言することが許容されている
以下のコードではコンソールには0,1と表示される
var a = 0;
console.log(a);
var a = 1;
console.log(a);
2.参照が巻き上げられる
変数を宣言する前に代入することが許容されている
以下のコードではコンソールには0と表示される
a = 0;
console.log(a);
var a;
3.スコープ単位が関数である
関数やifのような制御構文のブロックをすり抜けて変数の参照をすることが許容されている
コールスタック
実行中のコンテキストの積み重ねのこと
「LIFO」の形で消滅していく
ホイスティング
コンテキスト内で宣言した変数、関数をコード実行前にメモリに配置すること
関数の宣言より前に実行している以下のような処理でもコンソールにログが表示される
a();
function a() {
console.log('b');
}