【发布时间】:2025-08-10 06:45:01
【问题描述】:
我有两个这样的功能..
function a() {
function b() {
alert('reached');
}
}
我如何从函数 a() 外部调用函数 b()..
【问题讨论】:
-
你不能。
b仅在a范围内定义。 -
相关帖子here中的一些非常好的答案。
标签: javascript
我有两个这样的功能..
function a() {
function b() {
alert('reached');
}
}
我如何从函数 a() 外部调用函数 b()..
【问题讨论】:
b 仅在 a 范围内定义。
标签: javascript
一般来说,你不能。在另一个函数中定义一个函数的目的是将其范围限定为该函数。
在a 之外可以访问b 的唯一方法是(当您调用a 时)您在a 内部执行某些操作以使其在a 之外可用。
这通常是为了创建一个闭包,以便b 可以访问来自a 的变量,而不会将这些变量公开。正常的做法是返回b。
function a() {
var c = 0;
function b() {
alert(c++);
}
return b;
}
var d = a();
d();
d();
d();
var e = a();
e();
e();
e();
【讨论】:
您需要返回内部函数调用。
function a() {
function b() {
alert('reached');
}
return b();
}
然后你可以像这样调用函数a来调用这个函数:
a();
输出将是所需的警报。
【讨论】:
您可以将您的代码重新排列到此
function a() {
this.b = function() {
alert('reached');
}
}
现在实例化它并运行:
c = new a();
c.b();
【讨论】: