2015-04-02 4 views
0

Я нахожу следующие прекрасно работает:Обязательно объявлять локальные переменные в цикле?

while ((_next = itr.next()) && !_next.done) { 
    ... 
} 

и без предварительного объявления о _next, трейсер фактически бросает неожиданный ключ ошибку слово, если я объявить переменную while ((let _next = itr.next()) ....

Это ECMAScript 6?

+0

Btw, вы пропустили закрывающий ')' – Bergi

+0

Почему вы вручную обработку результатов от итератора, вместо того, чтобы просто делать 'для (х ITR) '? –

+0

По ряду причин, которые вы, возможно, захотите сделать, например, вам нужно знать, является ли итератор пустым или нет, прежде чем обрабатывать значение, возвращаемое из итератора, - читать строки вперед. – user5321531

ответ

1

while ((let _next = itr.next()) ... Это ECMAScript 6?

Операции № while должны содержать выражения, а не декларации переменных. И объявления переменных внутри оператора группировки в любом случае недействительны. Это не изменилось с ES5.
Использование

var _next; 
while ((_next = itr.next()) && !_next.done) { 
    … 
} 

или просто

for (let … of itr) { 
    … 
} 
+0

, который объясняет, почему traceur flags указывает на ошибку – user5321531

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