Оператор запятой оценивает каждый операнд, разделенный запятой (и возвращает значение последнего).Javascript: Comma operator, var и scope - почему он работает так, как он делает?
(i = 1 + 2), (j = 3 + 4);
функционально эквивалентен
i = 1 + 2;
j = 3 + 4;
Кроме того, насколько я знаю, заявление, таких как вар, не рассматривается в качестве оператора, а часть операнда. (См https://developer.mozilla.org/en/JavaScript/Reference/Operators/Operator_Precedence)
Таким образом, если каждый операнд быть отдельно оценены, почему же тогда
function foobar() {
var i = 3, j = 7, z;
}
создать 3 переменные - I, J, г - в рамках FOOBAR в?
Я знаю, что это на самом деле происходит, но я некоторое время задавался вопросом, почему это происходит на самом деле. Казалось бы, я должен быть в сфере foobar, но j и z должны оказаться в глобальном масштабе.
Есть ли ссылки на это требование? Я не вижу, что это действительно указано в https://developer.mozilla.org/en/JavaScript/Reference/Statements/var – BrianFreud
А, я действительно вижу это в тексте примера в https: //developer.mozilla .org/ru/JavaScript/Reference/Operators/Special/Comma_Operator. Я думаю, это крошечная разница, которая делает ее «почти почти той же», а не «той же» ... – BrianFreud
Ссылка: оператор 'var' имеет запятую [указанную как свой собственный синтаксический элемент] (http://www.ecma-international.org/ecma-262/6.0/#sec-variable-statement) (спецификация ECMAScript) –