27.06.2014, 15:37
|
|
Аспирант
|
|
Регистрация: 26.06.2014
Сообщений: 70
|
|
Сообщение от foo
|
На самом деле, откуда идут корни проблемы. Объявление без var соответствует оператору set! из scheme -- это оператор деструктивного присваивания. Обьявление без вар не модифицирует глобальную область, он модифицирует низлежащее лексическое окружение. Если бы программисты JS это понимали, они бы не стреляли себе в ногу,
counterMaker=function(start){return function(){console.log(start++)}}
counter=counterMaker(5)
counter()
counter()
counter()
//--------------\
5
6
7
Это ф-ция с состоянием, и она не засирает глобал, хотя никакого вар тут нет, синтаксически. Все проблемы от непонимания инструмента.
|
всё таки наверное я тупой, ничо не понял
|