mozilla 官网js实例中有个不理解的地方,求解

daemon_fish 2013-10-18 11:17:28
讲continue的地方


var i, j;

loop1:
for (i = 0; i < 3; i++) { //The first for statement is labeled "loop1"
loop2:
for (j = 0; j < 3; j++) { //The second for statement is labeled "loop2"
if (i == 1 && j == 1) {
continue loop1;
} else {
console.log("i = " + i + ", j = " + j);
}
}
}

// Output is:
// "i = 0, j = 0"
// "i = 0, j = 1"
// "i = 0, j = 2"
// "i = 1, j = 0"
// "i = 2, j = 0"
// "i = 2, j = 1"
// "i = 2, j = 2"
// Notice how it skips both "i = 1, j = 1" and "i = 1, j = 2"



请问为什么"i = 1, j = 1" and "i = 1, j = 2"都被掠过了,不明白第二个为什么会被跳掉
...全文
212 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ttdyee 2013-10-20
  • 打赏
  • 举报
回复
单continue跳过j循环 加了loop1就变成跳过i循环 的确是加深了continue的理解 作死的节奏!作死的节奏!作死的节奏!作死的节奏!
l676331991 2013-10-18
  • 打赏
  • 举报
回复
话说这不是遗传C语言而来的么? 和那个万人唾弃的goto一样。 要理解,理解一下#5的说法吧。如果continue不加标签,只能continue一层for循环,加label,就是continue第二层循环。break也一样可以这样用。 要是实际中有谁还在用语句标签,你就抽丫的!凡是用label跳来跳去的控制流程的做法,都是作死的节奏! 当作一种存在吧,或许JS版本再更新,这种标签跳转来控制流程的做法就不能用了。
cyscwnet 2013-10-18
  • 打赏
  • 举报
回复
支持一下,不会
KK3K2005 2013-10-18
  • 打赏
  • 举报
回复
loop1: for (i = 0; i < 3; i++) continue loop1;//继续 loop1的循环
zhjdg 2013-10-18
  • 打赏
  • 举报
回复
这个就是你想要的。 这种写法同用吗?

loop1:
for (i = 0; i < 3; i++) {      //The first for statement is labeled "loop1"
   loop2:
   for (j = 0; j < 3; j++) {   //The second for statement is labeled "loop2"
      if (i == 1 && j == 1) {
         continue loop2;
      } else {
         console.log("i = " + i + ", j = " + j);
      }
   }
}
yibey 2013-10-18
  • 打赏
  • 举报
回复
continue loop1; 这个意思就是 从这里开始马上继续执行loop1。也就是说跳出loop2 这里类同 break;跳出当前循环继续执行 。当然这个 continue loop1; 更加灵活
daemon_fish 2013-10-18
  • 打赏
  • 举报
回复
这叫 labeled statement , 里面可以用break 和 continue
zhjdg 2013-10-18
  • 打赏
  • 举报
回复
这什么写法来的 loop1: javascript真它爷爷的,这么奇怪写法。
happy59 2013-10-18
  • 打赏
  • 举报
回复
语句标签,看看

87,996

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧