Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Области видимости переменных в JavaScript
 
 автор: antf   (19.11.2008 в 22:49)   письмо автору
 
 

Здравствуйте. Написал код бегущей статусной строки (сначала просмотрел листинг учебника).


<html>

<head>
  <title></title>
</head>

<body onLoad="move_status_line()">
  <script>
    str = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna. ";
    i = 0;

    function move_status_line()
    {
      window.status = str.substring(i, str.length) + str.substring(0, i);
      if(i < str.length)
        i++;
      else
        i = 0;
      setTimeout("move_status_line()", 100);
    }


  </script>
</body>

</html>


Смущают две вещи:
1. Переменные i и str видны в функции move_status_line(), хотя мы не передавали их как параметры. До сих пор думал, что области видимости переменных в js и php одинаковы. В чем отличие?
2. Всегда ставил при обновлении переменной var i = 0; А здесь var опущено. Я использую устаревший синтаксис?

  Ответить  
 
 автор: Николай2357   (20.11.2008 в 02:49)   письмо автору
 
   для: antf   (19.11.2008 в 22:49)
 

>1. Переменные i и str видны в функции move_status_line(), хотя мы не передавали их как параметры.
В js переменная, объявленная вне функции является глобальной и видна везде.

>Всегда ставил при обновлении переменной var
Вообще работает и так. На эту тему много споров, но имхо лучше не эксперементировать и следовать протоколу. А в нем четко написано, переменная объявляется ключевым словом var. Я где то слышал фразу, произнесенную очень авторитетным человеком в js.
"Нет var, - нет переменной".

  Ответить  
 
 автор: antf   (20.11.2008 в 23:13)   письмо автору
 
   для: Николай2357   (20.11.2008 в 02:49)
 

Ясно, спасибо, но только переменные без вар встречаются уже в книгах.

  Ответить  
 
 автор: Николай2357   (21.11.2008 в 03:07)   письмо автору
 
   для: antf   (20.11.2008 в 23:13)
 

Они и раньше встречались. Но книги то пишут люди, и у них свои взгляды. Иногда идущие в разрез с концепциями разработчиков.
Вообще js много прощает, но это палка о двух концах. В какой то момент может вылезти боком.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования