2010-01-21 2 views
3

Только что наткнулся на это. Это нисколько не влияет на меня, но мне интересно, почему это происходит.Weird random value как параметр обработчика интервала по умолчанию

Если я запускаю следующий код в Firefox с поджигатель на:

setInterval(function(param) 
    { 
     console.log("param is %o",param) 
    },500); 

парам кажется, присваивается случайное значение неопределенно:

param is -2 
    param is -1 
    param is -2 
    param is 1 
    param is -1 
    param is 6 
    param is -1 
    param is 0 
    param is -2 
    param is 2 
    param is 0 
    param is 2 
    param is 0 
    param is 0 
    param is 0 
[..] 
    param is 0 
    param is 0 
    param is 0 
    param is 0 
    param is 0 
    param is 0 
    param is 0 
    param is 911 
    param is 0 
    param is 0 
    param is 0 
    param is -1 

Я ценю, что я не пропуская любой аргумент setInterval для передачи функции, но почему javascript решает передать это случайное число?

я ожидал бы неопределенными или что-то в этом роде ...

Приветствия

P.S. Не тестировались в других браузерах.

+0

Кстати, вы можете проверить это более просто, как это : 'setInterval (console.log, 500)'. – SLaks

ответ

3

Он, похоже, зависит от использования процессора Firefox.

Я бы предположил, что это задержка с момента вызова callback.

EDIT: I was right. Это число миллисекунд, когда вызвал обратный вызов.

+0

Молодцы. Имеет смысл. Кажется, всегда добавляется в качестве дополнительного параметра. Поэтому, если 2 аргумента переданы, это значение является третьим. – Ben

+0

да, я тоже был на этой странице –

+0

да, хорошая находка, определенно. не знал этого. очень круто –

0

Это идентификатор интервала, автоматически установленный window.setInterval. если вы сохраните результат, вы можете очистить интервал позже (остановить его)

var intID = window.setInterval(function(){ alert("I'm annoying!"); }, 10000); 

// this will kill it before it annoys you, :D 
window.clearInterval(intID); 

это также случай с window.setTimeout:

var timeID = window.setTimeout(function(){ alert("I'm annoying!"); }, 10000); 

// this will kill it before it annoys you, :D 
window.clearTimeout(timeID); 
+0

Ты не понимаешь его вопроса. Он не спрашивает, что возвращает 'setInterval'; он спрашивает, что он передает на обратный вызов. – SLaks

+0

Да, мой плохой, просто понял это. это странно. –

+0

это неправильный ответ, но, возможно, кто-то этого не знает, так что whatevs –

Смежные вопросы