変数の巻き上げ
Javascriptでは関数内のいかなる場所でもvarを用いることで変数の宣言ができます。
但し、この変数はどこで宣言されたとしても関数の先頭で宣言されたときと同様の振る舞いをします。
例えば以下のように記述したとき、
js
var str = "abc";
var func = function(){
console.log(str); //undefined
var str = "def";
console.log(str); //def
}
func();
上記のコードは下記と同義です。
宣言部分のみが先頭で行われたと見做されます。(初期化まではされていないことに注意)
js
var str = "abc";
var func = function(){
var str;
console.log(str); //undefined
str = "def";
console.log(str); //def
}
func();
巻き上げされたままグローバル変数を呼び出したいときは「this.変数名」の形にします。
js
var str = "abc";
var func = function(){
console.log(this.str); //abc
var str = "def";
console.log(str); //def
}
func();
以上で記事の解説はお終い!
HTML、CSS、JavaScriptをもっと勉強したい方にはUdemyがオススメ!同僚に差をつけよう!