我在outerFunction中定义变量“a”。我想在我的innerFunction中使用它。为什么这不起作用,在嵌套函数之间传递数据的最佳方法是什么?
var outerFunction = function () {
var a = 5;
innerFunction();
}
var innerFunction = function () {
alert(a);
}
outerFunction();
答案 0 :(得分:4)
您必须将参数添加到内部函数并从外部函数传递给它。
<强> Live Demo 强>
var outerFunction = function () {
var a = 5;
innerFunction(a);
}
var innerFunction = function (a) {
alert(a);
}
outerFunction();
答案 1 :(得分:2)
innerFunction
不是outeFunction
的内在功能,您只是从outerFunction
调用它。
内部功能应定义如下。
var outerFunction = function () {
var a = 5;
var innerFunction = function () {
alert(a);
}
innerFunction();
}
答案 2 :(得分:1)
在javascript函数中绑定到它们的上下文。这意味着outerFunction
内定义的变量只存在于那里而不存在于全局上下文中。但是对于函数innerFunction
,此范围不可用。所以你无法访问它。如果你需要它,你应该将它作为一个参数传递给innerFunction
明确地。
答案 3 :(得分:1)
实际上是嵌套它们:
var outerFunction = function () {
var innerFunction = function () {
alert(a);
}
var a = 5;
innerFunction();
}
outerFunction();
现在innerFunction
的范围(alert
有访问权限)位于outerFunction
范围内a
的范围内。
答案 4 :(得分:0)
var定义变量的局部范围。如果您不打算传递变量,那么执行此操作,
var outerFunction = function () {
a = 5;
innerFunction();
}
var innerFunction = function () {
alert(a);
}
outerFunction();
但干净的方法是传递变量
innerFunction(a)