Javascript Don';t在循环中生成函数

Javascript Don';t在循环中生成函数,javascript,jslint,Javascript,Jslint,在这种情况下,解决jslint错误的正确方法是什么?我将向使用此函数的对象添加一个getter函数。如果不在循环中创建函数,我不知道如何做到这一点 for (var i = 0; i<processorList.length; ++i) { result[i] = { processor_: timestampsToDateTime(processorList[i]), name_: processorList[i].processorName,

在这种情况下,解决jslint错误的正确方法是什么?我将向使用此函数的对象添加一个getter函数。如果不在循环中创建函数,我不知道如何做到这一点

for (var i = 0; i<processorList.length; ++i) {
   result[i] = {
       processor_: timestampsToDateTime(processorList[i]),
       name_: processorList[i].processorName,
       getLabel: function() { // TODO solve function in loop.
            return this.name_;
       }
   };
}

for(var i=0;i将函数移出循环:

function dummy() {
    return this.name_;
}
// Or: var dummy = function() {return this.name;};
for (var i = 0; i<processorList.length; ++i) {
   result[i] = {
       processor_: timestampsToDateTime(processorList[i]),
       name_: processorList[i].processorName,
       getLabel: dummy
   };
}

啊,我不认为“this”指针仍能以这种方式工作。它不是指向伪函数而不是结果[I]处的对象吗?换句话说,name_uuu是否仍能正确找到?@0x80
this
指向函数的上下文,即
results[I]
在这种情况下。太好了!感谢您清楚地解释了这一点。这是我在Javascript中从未有过信心的事情之一。@AmolMKulkarni当函数表达式放入循环中时,它是在每次迭代中构造的。将函数表达式/声明移到循环外有一些性能好处:会发生什么当您想向函数传递一些参数时?为什么不完全消除jslint错误?如何。因为错误的存在是有原因的。我不认为编写这样的代码是很好的,因为许多完全相同的函数都是在没有真正原因的情况下创建的。有时jslint不一定是正确编码风格的最终指南…是的(我想,我已经多年没有使用jslint了),但在我的书中,任何创建大量相同资源而没有真正原因的代码都是糟糕的代码。唯一可以这样做的情况是,它是否会提高性能。在这种情况下,你可以说它使代码更具可读性,但我相信这是非常微不足道的。作为一名javascript开发人员,你需要了解如何做到这一点
这个
有效。
/*jshint loopfunc:true */