这只是我正在做的事情的一个超级简化版本,但是想象一下需要在 switch 语句中对一个对象执行多个验证。在验证的任何时刻,我们可能会决定不继续使用该对象。
愚蠢的例子:
var yummies = [
{name: 'apples', quantity: 3},
{name: 'apples', quantity: 4}
];
var purchases = [];
for (var i = 0; i < yummies.length; i++) {
var yummy = yummies[i];
switch (yummy.name) {
case 'apples':
if (purchases.indexOf(yummy.name) > -1) {
break;
}
//A ton of other code including, possibly other breaks
purchases.push(yummy.name);
break;
}
}
由于我仍然希望继续执行循环,因此return
无法起作用。我认为我可以使用continue
语句来实现,但在switch/case
中看到continue
看起来确实很奇怪。
无论如何,在单个case
中使用两个break
。有没有不这样做的原因呢?
switch
语句是循环中的最后一条语句时,continue
和break
才是等效的。 - Barmarif/else
来代替break
。这只是个人样式偏好罢了。 - Barmarif/else
语句。continue
很有趣! - KJ Pricepurchases.push
放在里面,这样它就有一个在if(){}
后的单个break
。 - Spencer Wieczorekreturn
语句的问题类似。总体思路是一样的:如果你不喜欢深度嵌套的控制结构,使用多个return
或break
可以使代码更易于理解。http://stackoverflow.com/questions/32773065/should-we-use-early-return-for-a-simple-function - Barmar