Цитата(begin @ 15.7.2012, 23:00 ) | Итак, пишут, что:
1. объявляя глобальную переменную, нужно писать не
а:
|
Это заблуждение. Переменные объявляются только при помощи ключевого слова var. Если вы не используете var, то это не объявление переменной, а создание свойства глобального объекта. Отличие в том, что истинные переменные обладают внутренним свойством, запрещающим их удаление оператором delete, а также истинные переменные участвуют в таком процессе как «поднятие» (hoisting). Конкретнее, переменные, созданные с помощью var, становятся свойством объекта переменных. Для «переменных», объявленных без var, эти утверждения уже не справедливы.
Цитата(begin @ 15.7.2012, 23:00 ) | 2. обращаться к такой глобальной переменной внутри функции нужно не так
а так
| Код | window.error_data = data;
|
|
Это опять же из-за непонимания отличий между глобальной переменной и свойством глобального объекта (на который ссылается window). Вы можете обращаться к глобальным переменным (истинным переменным, объявленным при помощи var) через window, благодаря тому, что глобальный объект сам для себя является объектом переменных. |