変数のスコープ
js
var scope = 'global';
function getVal(){
var scope = 'local';
return scope;
}
console.log(getVal());//local
console.log(scope);//global
var宣言されない変数はすべてグローバル変数と見做されます。
以下のようにgetVal内のscopeをvar宣言無しで記述すると、グローバル変数のscopeを指すことに成るので、値が上書きされます。
js
var scope = 'global';
function getVal(){
scope = 'local';
return scope;
}
console.log(getVal());//local
console.log(scope);//local
ブロックスコープ
var宣言
var宣言の場合、f分のスコープ内で宣言した変数が、外でも使えてしまいます。
これを回避するには後述のletまたはconstで宣言する必要があります。
js
if(true){
var i = 100;
}
console.log(i);//100
let変数、const定数
let変数はブロックスコープに対応した宣言です。
以下のコードはブロック外のため、エラーになります。 constもブロックスコープに対応しています。
js
if(true){
let i = 100;
}
console.log(i);//ここで実行時エラー
なお、var宣言であっても関数の外では使えません。
js
function sample(){
var x = 10;
var y = 20;
console.log(x * y);
}
console.log(x);//ここで実行時エラー。
以上で記事の解説はお終い!
HTML、CSS、JavaScriptをもっと勉強したい方にはUdemyがオススメ!同僚に差をつけよう!