第14章.グローバル変数の問題
1.グローバル変数の問題 を参照および変更できます.
2.解決方法
グローバル変数を使用する必要がある理由が見つからない場合は、領域変数を使用する必要があります.
変数のスキャンが狭いほど良い シャーシ
암묵적 결합
有効範囲が広いため、すべてのコードはグローバル変数var x = 1;
// ...
// 변수의 중복 선언. 기존 변수에 값을 재할당한다.
var x = 100;
console.log(x); // 100
긴 생명 주기
メモリリソースに時間がかかる스코프 체인 상에서 종점에 존재
네임스페이스 오염
グローバル変数を使用する必要がある理由が見つからない場合は、領域変数を使用する必要があります.
変数のスキャンが狭いほど良い
즉시 실행함수
すべてのコードが即時実行関数に囲まれている場合、すべての水稲数は即時実行関数の지역 변수
になる.(function () {
var foo = 10; // 즉시 실행 함수의 지역 변수
// ...
}());
console.log(foo); // ReferenceError: foo is not defined
네임 스페이스 객체
var MYAPP = {}; // 전역 네임스페이스 객체
MYAPP.name = 'Lee';
console.log(MYAPP.name); // Lee
모듈 패턴
var Counter = (function () {
// private 변수
var num = 0;
// 외부로 공개할 데이터나 메서드를 프로퍼티로 추가한 객체를 반환한다.
return {
increase() {
return ++num;
},
decrease() {
return --num;
}
};
}());
// private 변수는 외부로 노출되지 않는다.
console.log(Counter.num); // undefined
console.log(Counter.increase()); // 1
console.log(Counter.increase()); // 2
console.log(Counter.decrease()); // 1
console.log(Counter.decrease()); // 0
ES6 모듈
ES 6モジュール提供ファイル自体の独立モジュールスキャン<script type="module" src="lib.mjs"></script>
<script type="module" src="app.mjs"></script>
Reference
この問題について(第14章.グローバル変数の問題), 我々は、より多くの情報をここで見つけました https://velog.io/@seohee0112/14장.-전역-변수의-문제점テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol