оператор += оператор присваивания. Он смотрит что лежит слево от него, прибавляет к нему то что справо, и присваиавет полученый результат тому что слева.
но тут суть не в этом
var q += 2;
q в данный момент равна undefined, а undefined + 1 получится обьект NaN ; и по сути он то и должен засунуться в q.
Но дело в операторе var он по сути декларирует переменные.
var q = 1; например еще ДО выполнения кода браузер смотрит все var'ы и "высасывает" их кверху области видимости. это называется высасывание. Так вот, он высасывает их еще ДО выполнения кода. он создает переменную
q и делает её равной undefined
а на месте от куда он высосал это все, он просто убирает слово var. и начинает выполнение скрипта как ни в чем не бывало.
то есть
var q = 1;
превращается в
var q;
q = 1;
Высасывание может работать лишь с оператором = (или без него естественно) по скольку предполагается что до начала выполнения скрипта переменные НЕ МОГУТ иметь ни каких значений, а операторы += -= и.т.п. рабтают именно со значениями переменных. Иными словами браузер пытаясь провести высасывание встречает не ожидаемый знак за место = и выдает синтаксическую ошибку.
Последний раз редактировалось Mахmахmахimus, 12.02.2012 в 21:40.
|