2

我在 outerFunction 中定义了变量“a”。我想在我的 innerFunction 中使用它。为什么这不起作用,在嵌套函数之间传递数据的最佳方式是什么?

var outerFunction = function () {
   var a = 5;
   innerFunction();
}


var innerFunction = function () {
   alert(a);
}

outerFunction();
4

5 回答 5

4

您必须向内部函数添加参数并从外部函数向其传递值。

现场演示

var outerFunction = function () {
   var a = 5;
   innerFunction(a);
}


var innerFunction = function (a) {
   alert(a);
}

outerFunction();
于 2012-10-24T18:31:20.337 回答
2

innerFunction 不是outeFunction您的内部功能只是从outerFunction. 内部函数应该定义如下。

var outerFunction = function () {
   var a = 5;
   var innerFunction = function () {
    alert(a);
   }
   innerFunction();
}
于 2012-10-24T18:33:03.153 回答
1

在 javascript 中,函数绑定到它们的上下文。这意味着内部定义的变量outerFunction仅存在于那里,而不存在于全局上下文中。但是对于功能,innerFunction此范围不可用。所以你不能访问它。如果你需要它,你应该将它作为参数传递给innerFunction明确的。

于 2012-10-24T18:33:24.693 回答
1

只是实际上嵌套它们:

var outerFunction = function () {

    var innerFunction = function () {
        alert(a);
    }

    var a = 5;
    innerFunction();
}

outerFunction();

NowinnerFunction的范围(有权访问的范围)在声明的wherealert范围内。outerFunctiona

于 2012-10-24T18:34:55.803 回答
0

var 定义变量的局部范围。如果您不打算传递变量,请执行此操作,

var outerFunction = function () {
   a = 5;
   innerFunction();
}


var innerFunction = function () {
   alert(a);
}

outerFunction();

但是干净的方法是传入变量

innerFunction(a)
于 2012-10-24T18:33:12.843 回答