【JavaScript 】変数のスコープ。
■topic summary
study about scope in JavaScript
きたよー。
(悪)名高きJavaScript スコープの概念!
お断り
記載しているp関数は以下の通りです
var p = function(obj){console.log(obj)};
varをつける理由
varをつけるとその関数内だけで有効な変数となる。
つまり、関数外の変数(グローバル変数)には
varをつけてもつけなくても挙動は同じ(だと思う)。
統一のために、すべてにvarをつけることが推奨されているみたい。
変数のスコープは「関数全域」
var x=1; function f(){ p(x); var x=10; p(x); } f();
■実行結果
undefined 10
この理由は、こう書き直したら納得。
function f(){ var x; p(x); x=10; p(x); }
じゃあこれは?
var p = function(obj){console.log(obj)}; var x=1; function f(){ p(x); x=10; p(x); } f();
■実行結果
1 10
変数の再宣言ではなく、
単にグローバル変数に再代入しているだけだから。
入れ子関数のスコープ
function f1(){ var x=1; function f2(){ p(x); var x=10; p(x); } f2(); } f1();
■実行結果
undefined 10