JavaScriptの関数での宣言の巻き上げは変数は巻き上げるが、変数の値は巻き上げない。 var a = 1; var func = function() { console.log(a); var a = 1; } func(); //=>undefined 以下のコードと同じ。 var a = 1; var func = function() { var a; console.log(a); a = 1; } func(); //=>undefined