JSのレキシカルスコープと実行コンテキストについて学習しています。外部環境を参照するときに、この特定の変数にアクセスできないのはなぜですか?
キーワードthis
についての理解は限られていますが、どの関数の現在の実行コンテキストでもすべての変数を参照していることがわかります。
function a(){
function b(){
console.log(this);
}
var myVar = 2;
b();
}
var myVar = 100;
a();
:私は、この例では1
今の値に割り当てられますmyVarにするコンソールログを取得します、ここで
function b(){
console.log(this);
}
var myVar = 1;
b();
:
この例を考えてみましょう
関数bが呼び出されると、100に割り当てられたmyVarへの参照が表示されます.2に割り当てられたmyVarへの参照がないのはなぜですか?
'this'は現在の関数のレキシカル環境を参照していませんか?この場合、関数bは関数aで囲まれ、地球環境で囲まれていません。
は、関数aのコンテキストではbではありませんか?したがって、関数aの外部環境への参照として関数bを使用しますか? –
@ user3882106 - いいえ。私が言ったように、コンテキストは宣言されている場所ではなく関数の呼び出し方法によって決まります。 http:// stackoverflowを参照してください。com/questions/3127429/how-does-the-this-keyword-workコンテキストとスコープを混同しないでください。 – Quentin