是否可以从外部函数访问内部变量,如此示例?
function a(f) {
var c = 'test';
f();
}
a(function() {
alert(c); //at this point, c should = "test"
});
答案 0 :(得分:4)
不,那不行。重要的是(词汇上)函数定义,而不是调用的地方。
当确定“c”指的是什么(如果有的话)时,语言在本地范围内查找,然后在下一个范围中根据函数的定义 。因此,如果在的另一个函数中调用“a”, 具有自己的本地“c”,则该值将是警报显示的内容。
function b() {
var c = 'banana';
a(function() {
alert(c);
});
}
b(); // alert will show "banana"
答案 1 :(得分:2)
不,这是不可能的。您声明匿名函数的范围无权访问此c
变量 - 事实上,除a
之外的其他任何内容都可以访问c
。
答案 2 :(得分:2)
这不会起作用,因为变量c
是在函数中定义的,并且在函数外部不可用。但有一种选择是将变量c
传递给提供给a
function a(f) {
var c = 'test';
f(c);
}
a(function(c) {
alert(c); //at this point, c should = "test"
});
答案 3 :(得分:0)
正如其他人所说,这是不可能的。你可以
1。在函数范围之外声明c
变量
2. 将参数传递给f
:
function a(f) { var c = { name: 'test' }; f(c) };
a(function(o) { alert(o.name) })