Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.05.2011, 10:20
Профессор
Посмотреть профиль Найти все сообщения от Solovei95
 
Регистрация: 15.03.2011
Сообщений: 353

Я нашел скрытый бонус JavaScript
for(i=0;i<3;i++){

window.setTimeout(function(i){
alert("test"+i);
},1000,i);

}


т.е. параметр i обязателен!
Ответить с цитированием
  #2 (permalink)  
Старый 24.05.2011, 10:24
Профессор
Посмотреть профиль Найти все сообщения от Solovei95
 
Регистрация: 15.03.2011
Сообщений: 353

Аналогично
window.addEventListener("load",function(i){
alert("test"+i);
}(i),false);
Ответить с цитированием
  #3 (permalink)  
Старый 24.05.2011, 10:46
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Сообщение от Solovei95
Аналогично
Абсолютно не аналогично. А насчет SetTimeout - тут ie все обламывает, так же, как и, например, это:
test = true,
function(x){
  var test = x;
  eval.call(window, "alert(test)");
}(false); // скрытый бонус)))
Ответить с цитированием
  #4 (permalink)  
Старый 24.05.2011, 11:33
Профессор
Посмотреть профиль Найти все сообщения от Solovei95
 
Регистрация: 15.03.2011
Сообщений: 353

Только этот бонус не работает, как цикл находиться внутри функции
Ответить с цитированием
  #5 (permalink)  
Старый 24.05.2011, 11:52
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Сообщение от Solovei95
Только этот бонус не работает, как цикл находиться внутри функции
Что, простите?
Ответить с цитированием
  #6 (permalink)  
Старый 24.05.2011, 12:22
Профессор
Посмотреть профиль Найти все сообщения от Solovei95
 
Регистрация: 15.03.2011
Сообщений: 353

Я уже решил проблему!
Ответить с цитированием
  #7 (permalink)  
Старый 24.05.2011, 13:14
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от Sweet
скрытый бонус
по-моему так проще:
test = true,
function(x) {
  var test = x;
  alert(window.test);
}(0);

Ответить с цитированием
  #8 (permalink)  
Старый 24.05.2011, 13:53
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

monolithed, мне просто вспомнилось, как когда-то мне надо было эвалить ( я был молод, горяч и любил эвалить ) скрипты. Но так как эвал происходит в текущем контексте, переменные оказывались не там, где надо:
(function(){
  eval("var test = true;");
}());
alert("test" in window);
Тогда я решил проблему так:
(function(){
  eval.call(window, 'var test = true;');
}());
alert("test" in window);
А потом я неожиданно узнал, что в ie так не получится. Тогда мне помог execScript, но с тех пор я понял: нашел "скрытый бонус", первым делом опробуй его в ie!
Ответить с цитированием
  #9 (permalink)  
Старый 24.05.2011, 17:55
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от Solovei95 Посмотреть сообщение
for(i=0;i<3;i++){

window.setTimeout(function(i){
alert("test"+i);
},1000,i);

}
А что этот пример возвращает в консоли? Не могу понять.


Кстати, в setTimeout можно передавать больше одного аргумента.
Ответить с цитированием
  #10 (permalink)  
Старый 24.05.2011, 18:24
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Сообщение от FINoM
А что этот пример возвращает в консоли?
Идентификаторы timeout-ов наверное.
Сообщение от FINoM
в setTimeout можно передавать больше одного аргумента.
Если это имеет значение, несмотря на некроссбраузерность, то проверить не проблема:
setTimeout(function(){
  alert( arguments.length );
}, 1, 1, 2, 3);
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Книга] Stoyan Stefanov, Javascript Patterns Dmitry A. Soshnikov Учебные материалы 20 13.08.2013 11:37
javascript вставки в vrml сцены. Передать событие из броузера Proletariy Javascript под браузер 0 10.05.2011 12:26
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34
Открыть с помощью javascript скрытый слой msprog Общие вопросы Javascript 1 07.09.2008 18:54