【问题标题】:Lint error within loop on function [duplicate]函数循环内的皮棉错误[重复]
【发布时间】:2015-01-20 12:55:50
【问题描述】:

我正在使用以下有效的代码,我的问题是我应该如何更好地编写它,因为当我使用 EsLint 时,我收到红色消息说不要在没有循环的情况下创建函数,目前我是 JS 新手,所以我不知道该怎么做那更好...

    for (var i = 0; i < allChildren.length; i++) {
        allChildren[i].attachChange(function(){
                this.getChecked() ? nSelectedChildren+=1 : nSelectedChildren-=1;
                if(nSelectedChildren === 0){
                    oParent.toggle("Unchecked");
                }
                else if(nSelectedChildren === allChildren.length){
                    oParent.toggle("Checked");
                }
                else{
                    oParent.toggle("Mixed");
                }
            }
        );

【问题讨论】:

  • 如果此代码有效,它可能更适合Code Review
  • 你错过了阅读它的“Never make a function withIN a loop”
  • @Funonly- 就是这样,知道如何写得更好吗?
  • @Funonly-我必须使用它:(,还有其他方法吗?更好的方法...?

标签: javascript jquery


【解决方案1】:

我认为 EsLint 的意思是:

function foo(){
    this.getChecked() ? nSelectedChildren+=1 : nSelectedChildren-=1;
    if(nSelectedChildren === 0){
        oParent.toggle("Unchecked");
    }
    else if(nSelectedChildren === allChildren.length){
        oParent.toggle("Checked");
    }
    else{
        oParent.toggle("Mixed");
    }
}

for (var i = 0; i < allChildren.length; i++) {
    allChildren[i].attachChange(foo);
}

不要在循环中定义函数

【讨论】:

    猜你喜欢
    • 2011-11-23
    • 1970-01-01
    • 2014-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 1970-01-01
    相关资源
    最近更新 更多