JavaScriptグローバルスコープ、関数スコープの詳細な解読
9711 ワード
JavaScriptグローバルスコープ、関数スコープの詳細な解読
グローバルスコープ:
スコープとは、変数のライフサイクルのことです.
明示的な宣言:
キーワードを伴うvarの声明.
暗黙の宣言:
宣言キーを持たない変数は、JSがデフォルトでグローバル変数を宣言します.
関数のスコープ:
関数のスコープ内では、外部は閉鎖されています.外部から直接関数内部のスコープにアクセスできません.
クローズドで関数内部変数にアクセスします.
直ちに関数を実行します.
これは実用的な関数であり、多くのライブラリが大域作用領域を分離し、個々の関数作用領域を形成している.
グローバルスコープ:
スコープとは、変数のライフサイクルのことです.
:
。
。
JavaScript 。
グローバル変数は、使いやすいですが、非常に怖いです.これはすべてのプログラマが公認している事実です.明示的な宣言:
キーワードを伴うvarの声明.
<script type="text/javascript">
var testValue = 123;
var testFunc = function () { console.log('just test') };
/**--------- window ------------**/
console.log(window.testFunc) // ƒ () { console.log('just test') }
console.log(window.testValue) // 123
</script>
実は、私たちが書いた関数はパッケージを通しないと、グローバル変数にもなります.彼のライフサイクルはグローバルスコープです.暗黙の宣言:
宣言キーを持たない変数は、JSがデフォルトでグローバル変数を宣言します.
<script type="text/javascript">
function foo(value) {
result = value + 1; // var
return result;
};
foo(123); // 124
console.log(window.result); // 124 <= window
</script>
今、変数resultはwindowの対象にマウントされました!!関数のスコープ:
関数のスコープ内では、外部は閉鎖されています.外部から直接関数内部のスコープにアクセスできません.
function bar() {
var testValue = 'inner';
}
console.log(testValue); // :ReferenceError: testValue is not defined
returnを通じて関数内部変数にアクセスします.function bar(value) {
var testValue = 'inner';
return testValue + value;
}
console.log(bar('fun')); // "innerfun"
関数は工場のように、内部で加工されたものを入力して加工してくれます.クローズドで関数内部変数にアクセスします.
function bar(value) {
var testValue = 'inner';
var rusult = testValue + value;
function innser() {
return rusult;
};
return innser();
}
console.log(bar('fun')); // "innerfun"
クローズドについては、この文章ではあまり説明しません.なぜなら、クローズドを説明するには、この文章と同じ長さが必要です.直ちに関数を実行します.
これは実用的な関数であり、多くのライブラリが大域作用領域を分離し、個々の関数作用領域を形成している.
<script type="text/javascript">
(function() {
var testValue = 123;
var testFunc = function () { console.log('just test'); };
})();
console.log(window.testValue); // undefined
console.log(window.testFunc); // undefined
</script>
その中の小包の内容は自動的に実行できます.グローバル変数の影響をよくなくすことができます.