Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Локальные и глобальные переменные, Присвоение значений глобал. переменным 
:(
    Опции темы
GIK
Дата 12.9.2005, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: 6
Всего: 14



Привет всем. У меня как обычно возник простенький вопрос.
Но для начала мне нужно чтобы скрипт приведенный ниже работал smile . Помогите плз.,

Код

<html>
<head>
  <script type="text/javascript">
  <!--
var numberA;
function num ()
{ var numberA=11;
  document.writeln("После вызова функции "num",  значение A=" + numberA + "<br/>");

{
// --> 
</script>
</head>
<body>
   <script type="text/javascript">
   <!--
numberA=12;
document.writeln(Начальное значение numberA=" + numberA + "<br/>");
num();
   // --> 
   </script>
</body>
</html>

А вопрос заключается в следующем: вот если я объявляю глобальную переменную var numberA в
части <head> и присваиваю ей какое нибуть значението, то что будет, если я объявлю другое значение этой же переменной в части <body>, т.е. какое значение "вылезет" в документ конструкцией document.writeln("глобальная переменная numberA=" + numberA);
Извините за то что спрашиваю если сам могу проверить, но блин не могу, потомучто мой скрипт не работает smile .

Это сообщение отредактировал(а) Aliance - 12.9.2005, 14:22


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
Burrr
Дата 12.9.2005, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 4.9.2005

Репутация: 10
Всего: 20



Ты запутался в расстановке кавычек и скобок.
Вот так всё работает и можно разобраться с переменной:
Код

<html>
<head>
<script type="text/javascript">
<!--
var numberA;
function num()
{
  var numberA=11;
  document.writeln("После вызова функции \"num\",  значение A=" + numberA + "<br/>");
}
--> 
</script>
</head>
<body>
<script type="text/javascript">
<!--
num();
numberA=12;
document.writeln("Начальное значение numberA=" + numberA + "<br/>");
num();
--> 
</script>
</body>
</html>


Это сообщение отредактировал(а) Aliance - 12.9.2005, 14:26


--------------------
PM MAIL ICQ   Вверх
GIK
Дата 12.9.2005, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: 6
Всего: 14



Спасибо что помог со скриптом.

Да приоритет отдается части <body>.
А теперь сделаем следующее:
Код

<html>
<head>
<script type="text/javascript">
<!--
var numberA=14;
documen.writeln("самое первое значение получаемое переменной numberA=" + numberA +"<br/>");
function num()
{
  var numberA=11;
  document.writeln("После вызова функции \"num\",  значение A=" + numberA + "<br/>");
}
--> 
</script>
</head>
<body>
<script type="text/javascript">
<!--
numberA=12;
document.writeln("Начальное значение numberA=" + numberA + "<br/>");
num();
--> 
</script>
</body>
</html>

Теперь, по сути, должно быть начальным число=14, ведь когда загружается браузер, все что находится в части <head> загружается первым, значит и вывод
documen.writeln("самое первое значение получаемое переменной numberA=" + numberA +"<br/>"); должен быть первым.
smile smile smile

Это сообщение отредактировал(а) Aliance - 12.9.2005, 14:26


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
Aliance
Дата 12.9.2005, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Модератор: пользуемся подсветкой корректно! Это не код C++, это код JS!
Правила форума: http://forum.vingrad.ru/index.php?s=&act=SR&f=27
PM MAIL WWW ICQ Skype   Вверх
Aliance
Дата 12.9.2005, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Цитата(GIK @ 12.9.2005, 12:44)
А вопрос заключается в следующем: вот если я объявляю глобальную переменную var numberA в
части <head> и присваиваю ей какое нибуть значението, то что будет, если я объявлю другое значение этой же переменной в части <body>, т.е. какое значение "вылезет" в документ конструкцией document.writeln("глобальная переменная numberA=" + numberA);

Область видимости переменной (глобальной) ограничивается (в клиентском JS) окном, содержащим документ. А далее происходит такой алгоритм:

  • ты объявляешь переменную в head`е
  • ты устанавливаешь ее новое значение в body


Цитата(GIK @ 12.9.2005, 14:30)
Да приоритет отдается части <body>.

Нет... фактически происходит так, но это не так, на самом деле.
Добавлено @ 14:27
Цитата(GIK @ 12.9.2005, 14:30)
Теперь, по сути, должно быть начальным число=14, ведь когда загружается браузер, все что находится в части <head> загружается первым, значит и вывод

Ты плохо представляешь себе как выполняются сценарии JS, это расказывать долго, поэтому поверь наслово smile
PM MAIL WWW ICQ Skype   Вверх
GIK
Дата 12.9.2005, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: 6
Всего: 14



Цитата
Ты плохо представляешь себе как выполняются сценарии JS, это расказывать долго, поэтому поверь наслово

И на этом спасибо smile



--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
Sardar
Дата 12.9.2005, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата(GIK @ 12.9.2005, 12:30)
Теперь, по сути, должно быть начальным число=14, ведь когда загружается браузер, все что находится в части <head> загружается первым, значит и вывод
documen.writeln("самое первое значение получаемое переменной numberA=" + numberA +"<br/>"); должен быть первым.

Для начала нужно прочесть спецификацию W3C HTML4.01 Без этого ещё какую чушь напорем smile
Кратко: секция head только для метаданных страницы, сам же документ отрисовываеться от body.

Существует понятие "поток документа", это поток тегов и текста. document.write пишет в поток документа, т.е. тег script удаляеться, а на его место вставляеться текстом всё что document.write выдал. Понятие "поток документа" не существует в XHTML, отсюда станет ясно почему там "нельзя" пользоваться document.write.


P.S. не тупи с ошибками, всегда смотри как подсвечиваеться код в редакторе, сразу увидишь какие скобки не закрыл. Также полезно смотреть в консоль браузера smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
GIK
Дата 12.9.2005, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: 6
Всего: 14



Все понятно кроме
Цитата
т.е. тег script удаляеться, а на его место вставляеться текстом всё что document.write выдал.

какой script удаляется?


Цитата
P.S. не тупи с ошибками, всегда смотри как подсвечиваеться код в редакторе, сразу увидишь какие скобки не закрыл. Также полезно смотреть в консоль браузера

OK. Буду внимательным.


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
Sardar
Дата 12.9.2005, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата(GIK @ 12.9.2005, 14:37)
какой script удаляется?

Тот который сейчас исполняеться. Другими словами если отойти от W3C DOM и структурного XML представления документа, перейти на родную для HTML'а кашу из маркировочных тегов(собсна философия SGML), то врубимся что теги это поток инфы. Отсюда ясно почему очень много парных тегов в HTML не требуют закрывающего тега.

В таком потоке встречаеться <script>, его содержимое полностю удаляеться из потока(не рисуеться), а всё что скрипт написал вставляеться на его место.

Повторяю: эта логика уже устарела в современном мире smile Сейчас принято верстать в XHTML, где документ это чёткое дерево и нет никаких <b>test <i>test</b> test</i>.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
GIK
Дата 12.9.2005, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: 6
Всего: 14



Цитата
то врубимся что теги это поток инфы

Цитата
В таком потоке встречаеться <script>, его содержимое полностю удаляеться из потока(не рисуеться), а всё что скрипт написал вставляеться на его место
.

Вот теперь все ясно. Биг тебе спасиб Sarbar




--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0526 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.