小编roy*_*y05的帖子

调试:ESLint 警告“循环中声明的函数包含对变量的不安全引用...no-loop-func”

使用 Create-React-App [ https://roy-05.github.io/sort-visualizer/ ]在 React 中构建 Sort-Visualizer

我正在使用 setTimeouts 为循环的每次迭代设置动画。在开发控制台上,我收到以下警告:

第 156:32 行:在循环中声明的函数包含对变量 'minimum'、'minimum'、'minimum'、'minimum' 的不安全引用 no-loop-func

这是代码片段:

for(let i=0; i<arr.length-1; i++){
            let minimum = i; //Declare minimum here
            setTimeout(()=>{
                for(let j = i+1; j<arr.length; j++){
                    setTimeout(()=>{
                        //Getting a warning for these references:
                        array_bar[j].style.backgroundColor = 'red';
                        array_bar[minimum].style.backgroundColor = 'blue';
                        setTimeout(()=>{
                            if(arr[j] < arr[minimum]){
                            array_bar[minimum].style.backgroundColor = 'lightblue';
                            minimum = j; 
                            }  
                            else{
                                array_bar[j].style.backgroundColor = 'lightblue';
                            }  
                        }, 4);
                    }, (j-1)*4);    
                }
Run Code Online (Sandbox Code Playgroud)

通过ESLint Docs,我相信问题可能是我正在修改 setTimeout 内的值,但该变量是在其范围之外声明的。

我不确定如何解决该警告,任何帮助将不胜感激!

注意:如果您需要,这里是整个功能 -

selectionSort(){ …
Run Code Online (Sandbox Code Playgroud)

javascript settimeout reactjs eslint create-react-app

8
推荐指数
1
解决办法
2万
查看次数