2017-09-16 7 views
-5

Why is the result 1? I think it might be 3.私はそれがためにレキシカルスコープまたは関数スコープと一緒に静的スコープのものでなければならないと考えてい

+2

画像ではなくコードを投稿してください。これはコードレビューに適しています。スタックオーバーフローではありません – user7951676

+2

@ user7951676いいえ!コードの説明は、コードレビューで話題にはなりません。 – Mast

+2

質問に問題のコードが含まれていないため、この質問をトピックとして閉じようとしています – Zeta

答えて

0

この(javascript関数)を説明する方法をお願いしたいと思います。

レキシカルスコープは、関数bが作成されたときに関数が作成されたときに可変スコープが依存することを示します。numはグローバルスコープです。

function b() { 
console.log(num)//num is scoped to its parent function it was created in 
} 

function a() { 
    var num = 3;//b will not have access to this num since it was not created here 
    arguments[0](); 
} 
num = 1; 
a(test) 

しかし、それは動的スコープたならば、変数のスコープは、ケースnumは、呼び出し元Aの NUMにスコープされているだろうした実行の順序に基づいています。あなたはこのスニペットをしようとした場合

それは正しく3.

function a(cb) { 
    function b() { 
    console.log(num) 
    }//b is created here so it has access to num 
var num = 3; 
b(); 
} 
num = 1; 
a(); 

あなたは、静的スコープと、ブロックスコープVS機能がよりよく説明されている動的な対静的、動的スコープin this questionについて読むことができます印刷されます。

関連する問題