看Vue源码感觉看到了while(i--),感觉像死循环,求解~

发布于 2022-09-05 10:05:24 字数 345 浏览 22 评论 0

在看Vue的源码,看到以下这段代码的while循环怎么看都是死循环,但是感觉源码不应该会有死循环啊,求指点~

function callUpdatedHooks (queue) {
  let i = queue.length
  // 这不是死循环吗
  while (i--) {
    const watcher = queue[i]
    const vm = watcher.vm
    if (vm._watcher === watcher && vm._isMounted) {
      callHook(vm, 'updated')
    }
  }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

浮萍、无处依 2022-09-12 10:05:24

首先,你要理解while循环:

while循环(英语:while loop)是一种控制流程的陈述。利用一个返回结果为布林值(Boolean)的表达式作为循> 环条件,当这个表达式的返回值为“真”(true)时,则反复执行循环体内的程式码;若表达式的返回值为“假”(false),则不再执行循环体内的代码,继续执行循环体下面的代码。

其次, while (i--),你要理解i--i=i-1,当i=0时, while (0)在js中就是while (false),循环就停止了。

悲念泪 2022-09-12 10:05:24
while (i--)

while i>0为真
whie i==0为假

i--相当于i=i-1,也就是i到0时循环结束
只等公子 2022-09-12 10:05:24

i减到0不是假么。

○愚か者の日 2022-09-12 10:05:24
i--;//当i到零的时候循环就停了  
while(0){} //这里是不执行的。
秋日私语 2022-09-12 10:05:24

你没有看明白 i--吗?

风向决定发型 2022-09-12 10:05:24

while(0)就会停下来了

中二柚 2022-09-12 10:05:24

在 js 中 "" 、 0 、undefined 之类的转成布尔值都是 false

爱她像谁 2022-09-12 10:05:24

你现在不适合看源码..................

以酷 2022-09-12 10:05:24

0在js的if判断中是false,所以--i等于0的时候,就跳出循环了,不会死循环滴

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文