break的一些知识点

提起`break`大家肯定都知道,写循环经常会用到break。这里总结一下关于`break`的一些知识点。


1、遍历大量数据记得用break跳出循环

什么意思呢?简单一点,当我有一千个不同的乱序的数据数组,我需要遍历一遍,但这个数据可能是第一个元素,也可能是最后一个元素。

对比一下下面两段代码:

code 1:

var result;
for(var i = 0; i < 1000; i++) {
  //arr和value_need已经知道
  if(arr[i] == value_need) {
    result = arr[i]; 
  }
}

code 2:

var result;
for(var i = 0; i < 1000; i++) {
  //arr和value_need已经知道
  if(arr[i] == value_need) {
    result = arr[i];
    break; 
  }
}

两段代码功能一样,第二种更好。


2、break只跳出一层循环

这个可别弄错了。

var sum = 0;

for(var i = 0; i < 10; i++) {
  for(var j = 0; j < 10; j++) {
    if(j == 5) break;
    sum++;
  }
}

console.log('sum: ' + sum);    //sum: 50

看到没,i从0到9,每次j从0到4自增5次。总共50次。要是它能跳出多重循环,sum应该是5才对。 既然说了`break`,就顺带说一下`continue`好了。

code 1:

var sum = 0;

for(var i = 0; i < 10; i++) {
  if(i == 5) continue;
  sum++;
}

console.log('sum: ' + sum);    //sum: 9

code 2:

var sum = 0;

for(var i = 0; i < 10; i++) {
  for(var j = 0; j < 10; j++) {
    if(i == 5 && j == 5) continue;
    sum++;
  }
}

console.log('sum: ' + sum);    //sum: 99

看到没,也就是跳过这一次循环而已。


3、跳出多重循环

这里需要`break`**标签语句**一起使用才能奏效。标签语句的语法是这样的:`label : statement`

var sum = 0;

outState:
for(var i = 0; i < 10; i++) {
  for(var j = 0; j < 10; j++) {
    if(j == 5) break outState;
    sum++;
  }
}

console.log('sum: ' + sum);    //sum: 5

看到没,直接在i为0的时候就执行了5遍就跳出整个双重循环了。 再来看一下`continue`的:

var sum = 0;

outState:
for(var i = 0; i < 10; i++) {
  for(var j = 0; j < 10; j++) {
    if(j == 5) continue outState;
    sum++;
  }
}

console.log('sum: ' + sum);    //sum: 50

每次j到5就不做了,直接到外层i循环。i从0到9,每次5次,就是50。

 

 

 

 

 

 

 

标签:
您是第 位访客, 本站总访问量
沪ICP备17026792号-1 苏公网安备 32099502000115号