Разница между аргументами в вызовах setInterval - PullRequest
3 голосов
/ 18 января 2011

В чем разница между этими вызовами setInterval и какими из них следует пользоваться?

setInterval("myFunction()",1000)
setInterval("myFunction",1000)
setInterval(myFunction(),1000)
setInterval(myFunction,1000)

Я предполагаю, что JS использует eval () для первых двух (строк) и вызывает два последних напрямую.

Кроме того, я не понимаю разницы между вызовами с круглыми скобками и без них. Те, которые в скобках, вызывают его напрямую, а затем периодически вызывают его возвращаемое значение?

1 Ответ

3 голосов
/ 18 января 2011

Корректное;первые два используют eval и их следует избегать любой ценой.

Добавление () вызывает функцию немедленно.

Функции Javascript на самом деле являются переменными, которые содержат функции.
Запись setInterval(myFunction, 1000) передает значение переменной myFunction в setInterval.
Запись setInterval(myFunction(), 1000) будет вызывать myFunction, а затем передавать все, что myFunction возвращает setInterval, как вызовлюбая другая функция.

...