在javascript中创建数组并在闭包内追加值
Creation of array and append value inside closure in javascript
我使用的是这个代码-
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);
相关文章:
- 在underscorejs模板中使用闭包
- setTimeout可以与闭包内的函数一起使用吗
- 附加到原型属性的Do函数没有闭包
- 使用闭包共享构造函数参数
- 使用Google闭包编译器包含一个Ecmascript 6类
- 从js引擎的角度来看闭包和构造函数是如何工作的
- for循环中的JavaScript闭包
- Javascript闭包-如何防止内存泄漏
- 子类访问父类's闭包变量
- 闭包如何具体化数据封装
- Javascript.闭包和dynamic'这'实际上具有约束力
- 构造函数函数闭包变量
- 闭包js框架-将ArrayBuffer转换为字符串
- 如何在Angularjs中重构闭包中的重复代码
- 如何告诉闭包javascript编译器不要混淆webkitAudioContext的方法名称
- Google闭包和生成的getters/ssetter
- 如何冻结函数's在闭包中的变量
- 如何使用外部Javascript库(如jQuery)重命名Google闭包样式表
- 使变量可用于不带闭包的异步调用
- 在javascript中创建数组并在闭包内追加值