質問: 1; num += 1; 以前上司の方にいずれかの形の時に、プライベート変数として使っていたつもりの変数を 「この変数はグローバル変数になっている。」とご指摘を受けたので、確認の意味も込めて質問させていただきました。 回答いただけるとありがたいです。
回答: 上司の理解が間違っている、以外では以下のような可能性があります **1.代入するつもりがタイプミスで暗黙のグローバル変数** 意外とよくあるパターンです。 ``` var num=1; mum+=1; ``` **2.そもそもトップレベルでvar宣言している** 「トップレベルのローカル変数」なのでグローバル変数と同義ですね。 ``` ``` **3.ブロックスコープ内で使用している** ``` for(var num=1;num<10;){ num+=1; //処理 } console.log(num); //値が取れてしまう ``` ES5までのvar宣言はブロック単位のスコープではなく関数単位のスコープなので、このnumは直観的にfor文内でのみ有効っぽいですが実はこのfor文を2.で説明したトップレベルに書くと実はグローバル変数になってしまいます。 これを回避するにはES2015以降で導入されるlet宣言を使ってください。(babelなどのトランスパイラ必須ですが...)