JavaScript-javascript for语句 中的多个判断条件,前者不生效,只跟后者有关,为什么?

发布于 2017-02-06 19:37:49 字数 105 浏览 1341 评论 1

    for(var i=0,j=0;i<4,j<20;i++,j++){
a=i+j;
}
console.log(a);

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

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

发布评论

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

评论(1

归属感 2017-06-11 15:17:51

不明白的时候就看源代码和手册吧,对于JS你可以要翻ECMA-262 5th Edition,for语句的语义在12.6.3节,逗号的语义在11.14节。

简单来说,expr1,expr2 先对执行expr1再执行expr2,最后返回expr2的结果(这是符合直觉的)。而 for(expr1; expr2; expr3){statement} 在expr2返回值为假的时候结束循环。

所以你的代码其实就是一直循环直到 i<4,j<20 为假,即 j<20 为假(因为我们返回expr2的值,for循环用这个值判断是否结束)。所以循环结束的时候,j = 19, i = 19,a = i + j = 38。

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