繁体   English   中英

在for循环中关闭编译器警告

[英]Closure compiler warning on for loop

我正在使用某种非常规的for循环,该循环很适合我在下面解释的内容(不必费心显示变量声明):

if (arr && arr.length > 0) {
    for (i = arr.length; i--; i) {
        element = arr.pop();
        //rest of code
    }
}

Closure编译器向我发出警告:“警告-可疑代码。此代码没有副作用,是否存在错误?” 专门指向for循环括号中的最后一个“ i”。

如果删除i,则jslint会发出警告,如果离开它,则关闭会引发警告。 这些循环总共有三个,是否有“关闭友好”的方式来做到这一点?

正常方式如何?

if (arr && arr.length > 0) {
    for (i = arr.length; i > 0; --i) {
        element = arr.pop();
        //rest of code
    }
}

将减量放入测试中并不是编写for循环的正常方法。

甚至更正常:

if (arr && arr.length > 0) {
    for (i = arr.length - 1; i >= 0; --i) {
        element = arr.pop();
        //rest of code
    }
}

...但是当您不使用i ,这无关紧要。

或者您可以使用一段while

if (arr && arr.length > 0) {
    i = arr.length;
    while (i--) {
        element = arr.pop();
        //rest of code
    }
}

对于将来的读者,如果要减少数组的长度,请不要使用for循环,请使用while

if (arr) {
    while (arr.length) {
        element = arr.pop();
        ...
    }
}

是的-这样的事情应该可以解决问题:

for (i = arr.length; i > 0; i--) {

使用jshint而不是jslint并关闭警告。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM