| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > Локальные и глобальные переменные |
| Автор: GIK 12.9.2005, 11:44 | ||
| Привет всем. У меня как обычно возник простенький вопрос. Но для начала мне нужно чтобы скрипт приведенный ниже работал
А вопрос заключается в следующем: вот если я объявляю глобальную переменную var numberA в части <head> и присваиваю ей какое нибуть значението, то что будет, если я объявлю другое значение этой же переменной в части <body>, т.е. какое значение "вылезет" в документ конструкцией document.writeln("глобальная переменная numberA=" + numberA); Извините за то что спрашиваю если сам могу проверить, но блин не могу, потомучто мой скрипт не работает |
| Автор: Burrr 12.9.2005, 12:31 | ||
| Ты запутался в расстановке кавычек и скобок. Вот так всё работает и можно разобраться с переменной:
|
| Автор: GIK 12.9.2005, 13:30 | ||
| Спасибо что помог со скриптом. Да приоритет отдается части <body>. А теперь сделаем следующее:
Теперь, по сути, должно быть начальным число=14, ведь когда загружается браузер, все что находится в части <head> загружается первым, значит и вывод documen.writeln("самое первое значение получаемое переменной numberA=" + numberA +"<br/>"); должен быть первым. |
| Автор: Aliance 12.9.2005, 13:40 |
| Модератор: пользуемся подсветкой корректно! Это не код C++, это код JS! Правила форума: http://forum.vingrad.ru/index.php?s=&act=SR&f=27 |
| Автор: Aliance 12.9.2005, 14:25 | ||||||
Область видимости переменной (глобальной) ограничивается (в клиентском JS) окном, содержащим документ. А далее происходит такой алгоритм:
Нет... фактически происходит так, но это не так, на самом деле. Добавлено @ 14:27
Ты плохо представляешь себе как выполняются сценарии JS, это расказывать долго, поэтому поверь наслово |
| Автор: GIK 12.9.2005, 14:39 | ||
И на этом спасибо |
| Автор: Sardar 12.9.2005, 15:19 | ||
Для начала нужно прочесть спецификацию http://www.w3.org/TR/html401/ Без этого ещё какую чушь напорем Кратко: секция head только для метаданных страницы, сам же документ отрисовываеться от body. Существует понятие "поток документа", это поток тегов и текста. document.write пишет в поток документа, т.е. тег script удаляеться, а на его место вставляеться текстом всё что document.write выдал. Понятие "поток документа" не существует в XHTML, отсюда станет ясно почему там "нельзя" пользоваться document.write. P.S. не тупи с ошибками, всегда смотри как подсвечиваеться код в редакторе, сразу увидишь какие скобки не закрыл. Также полезно смотреть в консоль браузера |
| Автор: GIK 12.9.2005, 15:37 | ||||
Все понятно кроме
какой script удаляется?
OK. Буду внимательным. |
| Автор: Sardar 12.9.2005, 16:05 | ||
Тот который сейчас исполняеться. Другими словами если отойти от W3C DOM и структурного XML представления документа, перейти на родную для HTML'а кашу из маркировочных тегов(собсна философия SGML), то врубимся что теги это поток инфы. Отсюда ясно почему очень много парных тегов в HTML не требуют закрывающего тега. В таком потоке встречаеться <script>, его содержимое полностю удаляеться из потока(не рисуеться), а всё что скрипт написал вставляеться на его место. Повторяю: эта логика уже устарела в современном мире |
| Автор: GIK 12.9.2005, 16:27 | ||||
Вот теперь все ясно. Биг тебе спасиб Sarbar |