我正在使用此代码 -
treeviewItem
我期待这段代码var gArray = (function (value) {
var array = [];
return function () {
array.push(value);
return array;
}
}());
gArray(1);
gArray(2);
gArray(3);
但我得到了[1, 2, 3]
答案 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)