Мы все знаем, что передача строки в setTimeout
(или setInterval
) является злой, потому что она запущена в глобальной области, имеет проблемы с производительностью, потенциально небезопасна, если вы вводите какие-либо параметры и т.д. это явно не рекомендуется:
setTimeout('doSomething(someVar)', 10000);
в пользу этого:
setTimeout(function() {
doSomething(someVar);
}, 10000);
Мой вопрос: может ли быть когда-нибудь причина для первого? Всегда ли это предпочтительнее? Если это не так, почему это разрешено?
Единственный сценарий, о котором я думал, - это желание использовать функцию или переменную, которая существует в глобальной области, но была переопределена в локальной области. Это звучит для меня как плохой дизайн кода, однако...