Показать сообщение отдельно
  #8 (permalink)  
Старый 12.02.2012, 21:26
Профессор
Посмотреть профиль Найти все сообщения от Mахmахmахimus
 
Регистрация: 10.02.2012
Сообщений: 254

оператор += оператор присваивания. Он смотрит что лежит слево от него, прибавляет к нему то что справо, и присваиавет полученый результат тому что слева.

но тут суть не в этом

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.
Ответить с цитированием