Результат вычисления var t = 1 == 1 ? 1 : 0;
в, скажем, консоли Firebug будет undefined
. Однако значение t
будет 1
, как и ожидалось. Попробуйте вывести t
после назначения.
Firebug будет выводить результат, когда объявление переменной находится в отдельной строке:
var t;
t = 1 == 1 ? 1 : 0;
Это потому, что возвращаемое значение операции присваивания является присваиваемым значением. Однако, когда присутствует ключевое слово var
, возвращается значение объявления VariableStatement, которое ведет себя следующим образом:
Производство ПеременнаяStatement : var
СпискаОбъявленияПеременных ; оценивается
следующим образом: оценить
СпискаОбъявленияПеременных . Вернуть
(обычный, пустой, пустой).
Где Return (normal, empty, empty).
относится к типу, распознаваемому внутренне JavaScript, а не к типу, который выводится на консоль.
Дальнейшее чтение:
http://ecma262 -5.com / ELS5_HTML.htm # Section_12.2