2012-04-06 4 views
2

еслиИспользование продолжить/перерыв внутри логическое выражение [V8]

true && (function() { console.log('executed'); })() 

нормально, то почему

true && continue; 

или

true && (continue); 

не работает, например, V8 (Node) бросает:

SyntaxError: Unexpected token continue 
+0

Что было бы полезно для этого? Continue используется для выхода из цикла/условного раннего. Это не логическое значение – jzworkman

+0

[здесь] (https://github.com/shichuan/javascript-patterns/blob/master/general-patterns/conditionals.html) см. Строку 125 – jakubmal

+0

Этот пример полностью отличается от использования 'continue '. Хотя это все еще заявление и не может быть использовано, как описано ниже, использование continue внутри логического оператора никогда не будет выполнено, просто попытайтесь понять, почему вы использовали это как пример вместо использования «true && result ++», который был вашим реальным примером , – jzworkman

ответ

2

В JavaScript есть выражения и утверждения. Выражения могут содержать выражения, но не наоборот. Оператор выражения true && false;.

&& ожидает двух выражений.

Оба true и (function() { ... })() являются выражения - это логическое выражение, вычисляемого true, а выражение функции (завернутый в круглых скобках, а затем называется), вычисляемое undefined.

continue является заявлением , поэтому вы не можете использовать &&. Вам нужно будет использовать if, потому что if принимает утверждение, которое должно выполняться, когда условие истинно.

Это правильное поведение в соответствии со спецификацией и не должно быть спецификацией V8.

+0

любой хороший способ обернуть его? – jakubmal

+0

@jakubmal: Что ты имеешь в виду? 'if (true) continue;' работает, и это не намного больше кода. – pimvdb

+0

meh, я знаю, это для удовольствия, все еще, 'true && (continue, 1)' не работает – jakubmal

0

Поскольку continue не выражение, возвращающие некоторое значение. И полное логическое выражение, а также его части должны возвращать некоторое значение.

Смежные вопросы