Является ли простой оператор `continue` приемлемой альтернативой вложению всего тела цикла for..in в`if`?

Как правило, решение для for..inпресловутая оговорка является чем-то вроде:

for(var prop in obj) {
    if(obj.hasOwnProperty(prop)) {
        foo(); bar(); baz();
    }
}

Я чувствую, что было бы чище просто сделать:

for(var prop in obj) {
    if(!obj.hasOwnProperty(prop)) continue;
}

Вопрос в том... Не являются ли они функционально идентичными?

2 ответа

Решение

Они функционально идентичны. Период.

Что касается стиля, Дуглас и его JSLint говорят: не используйте continue:

Избегайте использования оператора continue. Это имеет тенденцию затенять поток управления функции.

Смотрите http://javascript.crockford.com/code.html и ищите "продолжить"

Да, они функционально идентичны.


Я бы сказал, что пример без продолжения немного более семантический.

В первом примере вы не отрицаете bool в своем, если, таким образом, у вас есть типичный
if(property){"Execute the rest of this loop"}
вместо
if(not property){"Do not execute the rest of this loop"}

Другие вопросы по тегам