2010-11-22 21 views

答えて

4

いいえ、動作しません。重要なのは、(語彙的に)関数と定義されている場所で、どこにはが呼び出されていないかです。

「C」を参照して(何がいる場合)、言語は、関数の定義に基づいてて次の範囲では、ローカルスコープに見えるものを考え出します。したがって、 "a"の呼び出しがで行われた場合、別のの機能がの場合はにローカル "c"というアラートが表示されます。

function b() { 
    var c = 'banana'; 
    a(function() { 
    alert(c); 
    }); 
} 

b(); // alert will show "banana" 
2

いいえ、これはできません。あなたの無名関数を宣言するスコープは、このc変数にアクセスすることはできません。実際には、以外はa以外はcにアクセスできます。

0

他の人は言っているように、これは不可能です。

function a(f) { var c = { name: 'test' }; f(c) }; 
a(function(o) { alert(o.name) }) 
2

ありません、これは変数ので動作しません:あなた

1.

2.fに引数を渡す機能の範囲外c変数を宣言することができますcは関数内で定義されており、関数の外部では使用できません。ただし、変数cを、提供される関数に渡すこともできます。a

関連する問題