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

Creation of array and append value inside closure in javascript

本文关键字:追加 闭包 数组 javascript 创建      更新时间:2023-09-26

我使用的是这个代码-

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

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

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

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

您需要为返回的函数定义一个参数,即gArray:

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

您的外部函数是一个自调用函数。这意味着一旦达到(),它就会被执行。在这种特殊情况下,它正在返回:

function () {
    array.push(value);
    return array;
}

其取值为CCD_ 6。为了解决这个问题,您可以按如下方式重写代码:

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

var array = [];更改为this.array = [];

它需要有正确的范围。

var myArray = [];
function addToArray(value){
        myArray.push(value);
        console.log(value + " was added to " + myArray);
}
addToArray(1);
addToArray(2);
addToArray(3);

如果您返回myArray控制台,将显示[1,2,3]

这是最好的方法:

const array = [];
const pushArray = function(value, array) {
    array.push(value);
    return array;
};
pushArray(1, array);
pushArray(2, array);
pushArray(3, array);