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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Определение переменной внутри функции 
V
    Опции темы
namata
Дата 2.11.2007, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

function test(word)
    {
         setTimeout("say(word)", 1000);
    }
function say(word)
    {
         alert(word);
    }
test('hello');


Объясните, пожалуйста, почему это вызывает ошибку "word - определение отсутствует" и как будет выглядеть код правильно. Спасибо.
PM MAIL   Вверх
xvr
Дата 2.11.2007, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: нет
Всего: 223



Цитата(namata @ 2.11.2007,  19:32)
Код

function test(word)
    {
         setTimeout("say(word)", 1000);
    }
function say(word)
    {
         alert(word);
    }
test('hello');


Объясните, пожалуйста, почему это вызывает ошибку "word - определение отсутствует" и как будет выглядеть код правильно. Спасибо.

Ошибку это вызывает потому, что функция setTimeout сделает eval от своего первого параметра через 1 сек. в ГЛОБАЛЬНОМ контексте, а не в том контексте, где стоит ее вызов. В глобальном контексте никаких переменных word нет. Если у тебя версия IE >=5, то можно сделать так
Код

function test(word)
    {
         setTimeout(function () {say(word)}, 1000);
    }
function say(word)
    {
         alert(word);
    }
test('hello');

PM MAIL   Вверх
namata
Дата 2.11.2007, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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


 




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


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

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