我有一些代码片段
for(var i=0; i < this.arr2.length; i++) {
arr.push({
id: i.toString(),
label: this.arr2[i],
display: () => this.arr2[i]
})
}
如果我正在做这样的事情,为什么显示不确定
let val = this.arr2[i];
display: () => val
工作正常
答案 0 :(得分:1)
您应该使用let
关键字来声明块scope
本地变量
for(let = 0; i < this.arr2.length; i++) {
arr.push({
id: i.toString(),
label: this.arr2[i],
display: () => this.arr2[i]
})
}
对于此示例,很容易使用map
方法。
map()方法创建一个新数组,其中包含调用a的结果 为调用数组中的每个元素提供了函数。
arr=arr2.map(function(item,i){
return {id:i,label:item,display:()=>item};
});
简短的例子:
arr2=[1,2,3,4,5];
arr=arr2.map(function(item,i){
return {id:i,label:item,display:()=>item};
});
console.log(arr[1].display());