変数のスコープについてお聞きしたいことがあり、ご質問させていただきました。
javascript
1let x = 3; 2 3 function closure(init) { 4 5 var counter = init; 6 7 return function() { 8 9 return x += counter ; 10 11 } 12 } 13 14 var myClosure1 = closure(1); 15 var myClosure2= closure(100); 16 17 console.log(myClosure1()); 18 console.log(myClosure1()); 19 console.log(myClosure2()); 20 console.log(x);
上記は僕が作成したコードになるのですが、「console.log(myClosure2(x));」の部分で結果が105となっており、「myClosure2」を実行した結果、グローバル変数の値が書き換わっているのですが、このように関数内部からはトップレベルで宣言した変数の値を書き換えることができるが、関数外部からは、関数内部で宣言した変数に影響を与えることができない、という認識で合っていますでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/04 04:07