Javascript范围:将外部函数中的变量传递给内部函数

时间:2012-10-24 18:30:32

标签: javascript jquery oop variables scope

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

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


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

outerFunction();

5 个答案:

答案 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)