我有这段代码:
this.mGroupFunctions={};
for(var i=0; i<cols.length; i++){
var col=cols[i];
this.mGroupFunctions[col]=function(oContext) {
var name = oContext.getProperty(col);
return {
key: name,
text: name
};
};
}
如果我调试它,我获得
在函数中我插入col而不是变量col !!!的值
如何解决我的问题?
答案 0 :(得分:1)
当函数运行时,变量col
不再包含创建函数时的值。您可以使用立即调用的函数表达式(IIFE)来创建一个闭包,该闭包捕获循环中每次迭代的col
值:
this.mGroupFunctions = {};
for(var i=0; i<cols.length; i++){
this.mGroupFunctions[cols[i]] = (function(col){
return function(oContext) {
var name = oContext.getProperty(col);
return {
key: name,
text: name
};
};
})(cols[i]);
}