Javascript,jatwoli(this,scope,closure)
3212 ワード
1. scope
01.グローバルスキャン
02.エリアスキャン
03.関数スキャン(function-scoped)
04.ブロックスキャン(ブロック作用領域)
05.LexicalScope(LexicalScope)
var number = 1;
function a() {
var number = 10;
b();
}
function b() {
console.log(number);
}
a(); // ?
b(); // ?
? 10 // a() 결과 X
? 1 // b() 결과 X
1 // a() 결과
1 // b() 결과
呼び出し2. this
01.実行コンテキスト
02. Global Execution Context
03. Functional Execution Context
04. apply(), call(), bind() ?
const Tom = {
age: 25,
gender: 'man',
};
function printProfile(name) {
console.log(name, this.age, this.gender);
}
printProfile.apply(Tom, ['Tom']); // Tom 25 man
printProfile.call(Tom, 'Tom'); // Tom 25 man
printProfile.bind(Tom, 'Tom').call(); // Tom 25 man
apply:call関数と似ていますが、パラメータは配列受信に違いがあります.
call:オブジェクトをバインドしながら呼び出されます.
bind:バインドされた関数を返し、再呼び出し時に実行します.
Execution contextを作成するとバインドされるためです.
バインドは、オブジェクトと関数の組合せです.
3.キャビネット(クローズ)
function outerFn() {
let outerVar = 'outer';
console.log(outerVar);
function innerFn() {
let innerVar = 'inner';
console.log(innerVar);
}
return innerFn;
}
let globalVar = 'global';
let innerFn = outerFn();
innerFn();
Closer関数では、領域変数、外部関数の変数、およびグローバル変数にアクセスできます.
エンクロージャ使用例
Reference
この問題について(Javascript,jatwoli(this,scope,closure)), 我々は、より多くの情報をここで見つけました https://velog.io/@ansalstmd/Javascript-짜투리this-scope-closureテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol