break语句在js中的用法
usage of break statement in js
我很少用'break statement'。
而且我几乎是第一次使用它来通过 Free Code Camp 测试。
我通过了它,但后来我意识到我不知道我的代码究竟是如何工作的。
下面是我的代码。
function dropElements(arr, func) {
var copy = arr.slice();
for(var i = 0; i < arr.length; i++) {
if(!func(arr[i])){
copy.shift();
}
}
return copy;
}
我发现奇怪的是,我通过了以下列表中的 6 个中的 4 个而没有 'break'。
但是5号和6号,我没有休息就过了。
dropElements([1, 2, 3, 4], function(n) {return n >= 3;});
dropElements([1, 2, 3], function(n) {return n > 0;});
dropElements([1, 2, 3, 4], function(n) {return n > 5;});
dropElements([1, 2, 3, 7, 4], function(n) {return n > 3;});
dropElements([0, 1, 0, 1], function(n) {return n === 1;});
- 我的预期:
[1, 0, 1]
但没有中断 [0, 1]
。
dropElements([1, 2, 3, 9, 2], function(n) {return n > 2;})
- 我的预期:
[3, 9, 2]
但没有中断 [9, 2]
。
我在 chrome 控制台上尝试了您的代码,它正在运行。也许你应该直接向 freecodecamp 询问这个问题。
不管怎么说,break总会让你跳出循环。
在 5 和 6 中,条件是正确的,但是当您调用 shift 时,数组中的第一项仍在被删除。
比如在5中,
[0, 1, 0, 1] -> arr[i] = 0, func(arr[i]) 为假,copy = ([1, 0, 1])
[1, 0, 1] -> arr[i] = 1, func(arr[i]) 为真,copy = ([1, 0, 1])
[1, 0, 1] -> arr[i] = 0, func(arr[i]) 为假,复制 = ([0, 1])
在最后一次迭代中,即使传递了 0,仍然会移动 1,这就是为什么你得到 [0, 1]。
我很少用'break statement'。
而且我几乎是第一次使用它来通过 Free Code Camp 测试。
我通过了它,但后来我意识到我不知道我的代码究竟是如何工作的。
下面是我的代码。
function dropElements(arr, func) {
var copy = arr.slice();
for(var i = 0; i < arr.length; i++) {
if(!func(arr[i])){
copy.shift();
}
}
return copy;
}
我发现奇怪的是,我通过了以下列表中的 6 个中的 4 个而没有 'break'。
但是5号和6号,我没有休息就过了。
dropElements([1, 2, 3, 4], function(n) {return n >= 3;});
dropElements([1, 2, 3], function(n) {return n > 0;});
dropElements([1, 2, 3, 4], function(n) {return n > 5;});
dropElements([1, 2, 3, 7, 4], function(n) {return n > 3;});
dropElements([0, 1, 0, 1], function(n) {return n === 1;});
- 我的预期:
[1, 0, 1]
但没有中断[0, 1]
。
- 我的预期:
dropElements([1, 2, 3, 9, 2], function(n) {return n > 2;})
- 我的预期:
[3, 9, 2]
但没有中断[9, 2]
。
- 我的预期:
我在 chrome 控制台上尝试了您的代码,它正在运行。也许你应该直接向 freecodecamp 询问这个问题。
不管怎么说,break总会让你跳出循环。
在 5 和 6 中,条件是正确的,但是当您调用 shift 时,数组中的第一项仍在被删除。
比如在5中,
[0, 1, 0, 1] -> arr[i] = 0, func(arr[i]) 为假,copy = ([1, 0, 1])
[1, 0, 1] -> arr[i] = 1, func(arr[i]) 为真,copy = ([1, 0, 1])
[1, 0, 1] -> arr[i] = 0, func(arr[i]) 为假,复制 = ([0, 1])
在最后一次迭代中,即使传递了 0,仍然会移动 1,这就是为什么你得到 [0, 1]。