Почему декларации не возвращаются? Есть ли для них техническая причина?
Выгода, если декларация вернула значения их переменных, заключалась бы в том, что я мог бы написать что-то вроде:
while((var next = generator.next())) doSomething(next);
Из-за спецификации мне нужно объявить следующее в области, которой она не принадлежит.
(Примечание: где-нибудь лучше задать этот вопрос? Возможно, этот вопрос спорный, а не только технический.)
Этот вопрос дублирует значение, возвращаемое назначением, хотя ответа на него не так много, как будто это так, потому что оно было указано как (как неутешительно). var
не является частью выражения.
Но так как вы спрашиваете о в while
цикл, я хотел бы предложить эту альтернативу:
for(let next; next = generator.next();) doSomething(next);
var
даже не имеет смысла как часть выражения. В любом случае это будет выведено в область действия функции.
Мне нужно объявить следующее в области, которой она не принадлежит.
Вы можете использовать область блока для выполнения задач, где ранее определенное объявление переменной сохранит исходное значение, назначенное вне области блока
const next = "abc";
const doSomething = prop => console.log(prop);
{
let next = 10;
while (next = --next) doSomething(next)
}
console.log(next); // '"abc"'
a = b = c = 5