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

时间:2015-09-03 06:59:26

标签: javascript

我正在使用此代码 -

treeviewItem

我期待这段代码var gArray = (function (value) { var array = []; return function () { array.push(value); return array; } }()); gArray(1); gArray(2); gArray(3);

但我得到了[1, 2, 3]

5 个答案:

答案 0 :(得分: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

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

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

答案 1 :(得分:1)

在这段代码中,当你的外部函数是自调用函数时,意味着一旦你到达()它就会被执行,所以当它返回时根据你的函数执行

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

将值视为未定义,因此要解决此问题,您可以这样做:

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

希望它会有所帮助

答案 2 :(得分:0)

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]

答案 3 :(得分:0)

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

它需要有合适的范围。

答案 4 :(得分:-3)

这是最好的方法

var array = [];
var pushArray = function(value,array){

 array.push(value)
return array;
}
pushArray(1,array)
pushArray(2,array)
pushArray(3,array)