この例のような外部関数から内部変数にアクセスすることはできますか?javascriptの外部関数から内部変数にアクセス
function a(f) {
var c = 'test';
f();
}
a(function() {
alert(c); //at this point, c should = "test"
});
この例のような外部関数から内部変数にアクセスすることはできますか?javascriptの外部関数から内部変数にアクセス
function a(f) {
var c = 'test';
f();
}
a(function() {
alert(c); //at this point, c should = "test"
});
いいえ、動作しません。重要なのは、(語彙的に)関数がと定義されている場所で、どこにはが呼び出されていないかです。
「C」を参照して(何がいる場合)、言語は、関数の定義に基づいてて次の範囲では、ローカルスコープに見えるものを考え出します。したがって、 "a"の呼び出しがで行われた場合、別のの機能がの場合はにローカル "c"というアラートが表示されます。
function b() {
var c = 'banana';
a(function() {
alert(c);
});
}
b(); // alert will show "banana"
いいえ、これはできません。あなたの無名関数を宣言するスコープは、このc
変数にアクセスすることはできません。実際には、以外はa
以外はc
にアクセスできます。
他の人は言っているように、これは不可能です。
function a(f) { var c = { name: 'test' }; f(c) };
a(function(o) { alert(o.name) })
ありません、これは変数ので動作しません:あなた
1.は
2.がf
に引数を渡す機能の範囲外c
変数を宣言することができますc
は関数内で定義されており、関数の外部では使用できません。ただし、変数c
を、提供される関数に渡すこともできます。a