在javascript中创建数组并在闭包内附加值

Pan*_*sht 0 javascript

我正在使用此代码 -

var gArray = (function (value) {
    var array = [];
    return function () {
        array.push(value);
        return array;
    }
}());

gArray(1);
gArray(2);
gArray(3);
Run Code Online (Sandbox Code Playgroud)

我期待这段代码 [1, 2, 3]

但我得到了 [undefined, undefined, undefined]

elc*_*nrs 5

gArray函数没有参数,立即调用的函数可以,但是在调用它时没有传递任何内容:

var gArray = (function (value) { //<- Argument of IIFE
    var array = [];
    return function () { //<- No arguments for gArray
        array.push(value);
        return array;
    }
}()); //<- No arguments passed to IIFE
Run Code Online (Sandbox Code Playgroud)

你需要的是为返回的函数定义一个参数,它是gArray:

var gArray = (function () {
    var array = [];
    return function (value) {
        array.push(value);
        return array;
    }
}());
Run Code Online (Sandbox Code Playgroud)