将子函数传递给父函数,子函数然后使用父函数变量?

时间:2017-10-30 00:16:41

标签: javascript function

var thisfunc = function() {
 potato++;
}
var obj = function(myfunc) {
   var potato = 12;
   myfunc(); 
}
obj(thisfunc);
//Potato is now 13

- (我认为可以这样做的一种方式)

var thisfunc = function(mypotato) {
 mypotato++;
}
var obj = function(myfunc) {
   var potato = 12;
   myfunc(potato); 
}
obj(thisfunc);
//Potato is now 13

我可以通过什么方式将马铃薯传递给myfunc',我假设将马铃薯作为参数传递给myfunc会这样做,但是我希望我能做到这一点myfunc()可以访问其父属性还是无法访问?

2 个答案:

答案 0 :(得分:0)

JavaScript具有本地范围,没有传递引用调用,因此这是不可能的。

你唯一能做的就是嵌套你的两个函数,这样子函数可以通过闭包访问父变量:

function obj() {
    function myfunc() {
        potato++;
    }
    var potato = 12;
    myfunc();
    console.log(potato); // 13
}
obj();

如果您不想进行嵌套,或者确实需要thisfunc是动态的,那么您所能做的就是构建一个对象并访问其属性而不是局部变量 - 一个对象你也可以传球。

function thisfunc(x) {
    x.potato++;
}
function obj(myfunc) {
    var scope = {
        potato: 12
    };
    myfunc(scope);
    console.log(scope.potato); // 13
}
obj(thisfunc);

答案 1 :(得分:0)

您有三种选择。

  1. 在父函数之外声明potato
  2. potato设为全局变量。
  3. 如您所示,将其传递进去。