js中for循环中用break报错Uncaught SyntaxError: Illegal break statement?

<script>

    let arr=document.getElementsByClassName("img");
    let arr1=document.getElementsByClassName("index2")
    var len=0;
    var along=arr.length;
    function g()
    {
        if(len==along){len=0;}{
        for(let i=0;i<along;i++)
        {
            arr[i].style.display="none";
            arr1[i].style.backgroundColor="rgba(1,1,1,0.2)";
            arr1[i].style.boxShadow="none";
        } 
        arr1[len].style.boxShadow="0 0 2px 5px rgba(255,255,255,0.3)";
        arr1[len].style.backgroundColor=" rgba(255,255,255,1)";
        arr[len].style.display="block";
        len++;
        for(var j=0;j<along;j++){
        arr[j].onmouseover=function()
                {
                    clearInterval(timeeer);
                    clearInterval(timeer);
                }
                arr[j].onmouseout=function(){
                var timeer=setInterval("g()",2000);
                break;
                }
        }
    }
    }
    g();
    var timeeer=setInterval("g()",2000)


我想在arr[j].onmouseout=function(){}里面用break但是报错

阅读 2.5k
1 个回答

image.png

如图:break 已经不是在 for 里了,而是在一个函数里(onmouseout 的处理函数)。不过你好像已经意识到了这个问题。

break 用于跳出循环。中断函数执行用 return。

一方面,这里处理函数的执行时机和 for 循环的执行时机是完全分离的。函数执行的时候 for 可能早都执行完了。

另一方面,处理函数的作用域、上下文和 for 语句所在的作用域、上下文不同。不能在子级上下文中中断外面的 for 循环。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题