Показать сообщение отдельно
  #36 (permalink)  
Старый 27.06.2014, 15:30
foo foo вне форума
Профессор
Отправить личное сообщение для foo Посмотреть профиль Найти все сообщения от foo
 
Регистрация: 17.05.2014
Сообщений: 197

Сообщение от Erolast
Да, это пережиток ранних стандартов.
На самом деле, откуда идут корни проблемы. Объявление без var соответствует оператору set! из scheme -- это оператор деструктивного присваивания. Обьявление без вар не модифицирует глобальную область, он модифицирует низлежащее лексическое окружение. Если бы программисты JS это понимали, они бы не стреляли себе в ногу,


counterMaker=function(start){return function(){console.log(start++)}}
counter=counterMaker(5)

counter()
counter()
counter()
//--------------\  
5
6
7

Это ф-ция с состоянием, и она не засирает глобал, хотя никакого вар тут нет, синтаксически. Все проблемы от непонимания инструмента.

Последний раз редактировалось foo, 27.06.2014 в 15:34.
Ответить с цитированием