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