看Vue源码感觉看到了while(i--),感觉像死循环,求解~
在看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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
首先,你要理解while循环:
其次,
while (i--)
,你要理解i--
即i=i-1
,当i=0
时,while (0)
在js中就是while (false)
,循环就停止了。i减到0不是假么。
你没有看明白 i--吗?
while(0)就会停下来了
在 js 中 "" 、 0 、undefined 之类的转成布尔值都是 false
你现在不适合看源码..................
0在js的if判断中是false,所以--i等于0的时候,就跳出循环了,不会死循环滴