繁体   English   中英

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

[英]Javascript scope: passing a variable from an outer function to an inner function

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

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


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

outerFunction();

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

现场演示

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


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

outerFunction();

innerFunction不是的内部函数outeFunction你只是从调用它outerFunction 内部功能应定义如下。

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

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

只是实际嵌套它们:

var outerFunction = function () {

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

    var a = 5;
    innerFunction();
}

outerFunction();

现在, innerFunction的范围( alert具有访问innerFunction )位于声明aouterFunction的范围内。

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

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


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

outerFunction();

但干净的方法是传递变量

innerFunction(a)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM