You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

空循环体的while循环如何助力activeMenu()函数运行?

关于activeMenu()函数中空while循环的解析

循环的工作原理

这个while循环的逻辑完全体现在条件判断语句里,空循环体只是因为不需要额外执行代码,所有操作都在循环条件中完成:

  • 初始时len被赋值为页面中section元素的总数。
  • 每次循环开始前,先执行--len将len减1,接着判断两个条件(逻辑与&&会短路,左边不满足时右边不会执行):
    1. --len的结果不为0(如果len减到0,左边条件为false,整个判断直接不成立)
    2. 当前页面滚动距离window.scrollY加上97,小于索引为len的section元素的顶部偏移量offsetTop
  • 只要两个条件同时满足,循环就会持续执行(也就是不断给len减1,重复判断),直到其中一个条件不满足,循环终止。

对函数的作用

这个循环的核心作用是定位当前滚动位置对应的导航项索引:
它从最后一个section开始向前遍历,找到第一个符合“当前滚动位置(加97偏移,一般是为了抵消导航栏的高度,避免导航栏遮挡导致判断偏差)未超过该section顶部”的临界点,此时的len就是当前视图区域对应的section的索引。

后续代码会移除所有导航项的active类,再给索引为len的导航项添加active类,从而实现滚动页面时自动高亮对应导航的效果。


内容的提问来源于stack exchange,提问作者Vishnu-

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 06:27:13