почему нельзя объявить переменную и в ней использовать совмещенные операторы?!!
Здравствуйте господа,
изучаю JS и вроде все хорошо (не все понимаю но читаю и разбираюсь до болтика), но этот вопрос еще с вчерашнего вечера меня беспокоит. Почему когда я объявляю переменую, не могу использовать совмещенные операторы? банальный пример: var i = 10; var num += i; alert(num); т.е. естественно, придется либо ее не объявлять, либо объявить отдельно как переменную i. с чем связанно, и как это понимать? Просьба не обзываться дураком и прочими словами, а то есть такие тут любители. Я скажу спасибо даже за то, что Вы, будете культурны. |
в том и дело что изначально у num нет начального значения.
я хочу как можно короче записать выражение, т.е. 1) объявить переменную num 2) сказать num что она равняется i -- 10 3) сказать что num + i = 20 и в конце вывести значение num / 20 как я понял на деле это нельзя... |
Цитата:
|
то есть реализовать задуманное придется так:
var i = 10; var num = i; num += i; alert(num); весь вопрос в том, зачем лишние "движения" (( в чем логика не возможности? в том что это не учтено в спеке или потому что у меня логика странная? |
Цитата:
var i = 10; var num = i + i; |
Цитата:
var i = 10; var num = i + i; alert(num); |
вообщем нельзя одновременно использовать совмещенный оператор и объявить переменную.
var num = i + i; - это естественно я знал. |
оператор += оператор присваивания. Он смотрит что лежит слево от него, прибавляет к нему то что справо, и присваиавет полученый результат тому что слева.
но тут суть не в этом var q += 2; q в данный момент равна undefined, а undefined + 1 получится обьект NaN ; и по сути он то и должен засунуться в q. Но дело в операторе var он по сути декларирует переменные. var q = 1; например еще ДО выполнения кода браузер смотрит все var'ы и "высасывает" их кверху области видимости. это называется высасывание. Так вот, он высасывает их еще ДО выполнения кода. он создает переменную q и делает её равной undefined а на месте от куда он высосал это все, он просто убирает слово var. и начинает выполнение скрипта как ни в чем не бывало. то есть var q = 1; превращается в var q; q = 1; Высасывание может работать лишь с оператором = (или без него естественно) по скольку предполагается что до начала выполнения скрипта переменные НЕ МОГУТ иметь ни каких значений, а операторы += -= и.т.п. рабтают именно со значениями переменных. Иными словами браузер пытаясь провести высасывание встречает не ожидаемый знак за место = и выдает синтаксическую ошибку. |
Gvozd да, да все верно, я ожидал что интерпретатор меня поймет)) :) Всем большое спасибо! Mахmахmахimus, отдельная благодарность, жаль что Вы сказали, нет в учебнике по Js на этом сайте. Теперь мне всё понятно, подведя итог можно утверждать что: использование оператора var не возможно одновременно с совмещенными операторами. |
alexben,
да,а еще декларирование функций тоже высасывается) |
Часовой пояс GMT +3, время: 22:47. |