1

我有一个类似这样的功能:

var func1 = function () {
       var apple;
       //Some other code
};

我已经将该函数作为其他函数的参数传递

control(func);

现在,我想访问控制函数中的变量 apple。func1.apple不起作用。有谁知道这是如何做到的?

4

2 回答 2

2

在不更改函数的情况下使用这种语法是不可能的。func1.apple不运行apple,类似的东西func1().apple已经运行apple。如果你只是想返回一些东西,那么使用return

var func1 = function() {
    var apple;
    …
    return apple;
};

var apple = func1();

或者,如果您有多个要返回的值,则返回一个对象:

var func1 = function() {
    var apple;
    …
    return {apple: apple};
};

var apple = func1().apple;

如果您在函数运行期间需要该值,则完成此操作的唯一方法是在回调中使用另一个回调:

var func1 = function(useApple) {
    var apple;
    …
    useApple(apple);
    …
};

func1(function(apple) {
    // Do something with apple
});

* 属性是另一种方式,但它们算作回调并且是邪恶的 :)

于 2013-03-12T16:36:15.517 回答
0

我认为您可能正在寻找的是构造函数模式

var func1 = function () {
       this.apple = "My Apple";
};

var myFuncInstance = new func1();

myFuncInstance.apple; // "My Apple"
于 2013-03-12T16:50:16.267 回答