Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   где еще используется VAR ? (https://javascript.ru/forum/misc/48246-gde-eshhe-ispolzuetsya-var.html)

Erolast 27.06.2014 15:21

Пришли два пацана на форум программистов и начали всех учить правильному коду. Збс.

nverv 27.06.2014 15:23

Цитата:

Сообщение от Erolast (Сообщение 318274)
Пришли два пацана на форум программистов и заявили, что тут все неправильно кодят на неправильно составленном языке. Збс.

да нет жешь, наоборот шобы понять основы языка, ибо в учебниках не понятно

вот ты мне скажи - зачем разделять переменные от свойств
вот балин не врубаюсь

локальные переменные в области видимости функции - варом
все остальные переменные так или иначе все располагаются в иерархии глобального объекта - их можно создавать методом добавитьСвойство и удалять

и всё

Erolast 27.06.2014 15:25

Тебе объяснили эти основы, я лично аж несколько раз. var использовать надо обязательно, ибо это стандарт. Ты с foo напару упорно твердишь, что мы тут все неправы и он не нужен. Прелестно, чо.

Erolast 27.06.2014 15:28

Цитата:

вот ты мне скажи - зачем разделять переменные от свойств
Затем, что это разные сущности.

nverv 27.06.2014 15:30

Цитата:

Сообщение от Erolast (Сообщение 318277)
Тебе объяснили эти основы, я лично аж несколько раз. var использовать надо обязательно, ибо это стандарт. Ты с foo напару упорно твердишь, что мы тут все неправы и он не нужен. Прелестно, чо.

тут ты не прав

создавать можно и Варом и методом добавтьСвойство - результат одинаковый за исключением параметра Неудаляемый

foo 27.06.2014 15:30

Цитата:

Сообщение от 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:32

Цитата:

Сообщение от nverv
варом создаю глобальные переменные, и постепенно образуется бардак
то есть вар это не решение проблемы засирания, это другая история

Не, там они, эти комитетчики и прочие, видят проблему в том, что глобал засирается неявно. То что явно определено в глобале, об этом речи нет

nverv 27.06.2014 15:33

Цитата:

Сообщение от Erolast (Сообщение 318279)
Затем, что это разные сущности.

есть две сущности -
1) иерархия объектов внутри глобального объекта (создаются методом добавитьСвойство)
2) локальные переменные подпрограмм (создаются Варом)

вот это настоящая правда-истина

Erolast 27.06.2014 15:35

Цитата:

создавать можно методом добавтьСвойство
При чем тут метод defineProperty, если ты о нем, когда мы говорим о переменных? :blink:

Цитата:

есть две сущности -
1) иерархия объектов внутри глобального объекта (создаются методом добавитьСвойство)
2) локальные переменные подпрограмм (создаются Варом)

вот это настоящая правда-истина
Да, правильно. Ну, почти. defineProperty используется для того, чтобы при объявлении свойства установить на него какие-либо флаги. Свойства объявляются обычно так:
var some_object = {};
some_object.property = 10;

nverv 27.06.2014 15:36

Цитата:

Сообщение от Erolast (Сообщение 318284)
При чем тут метод defineProperty, если ты о нем, когда мы говорим о переменных? :blink:

что такое переменная?! если не просто именованный контейнер, адрес относительно глобального корня

о чем мы спорим?


Часовой пояс GMT +3, время: 12:35.