Самое большое отличие состоит в том, что второй оператор приведет к тому, что animateImage()
будет оцениваться в глобальной области видимости.
Это может привести к проблемам, если
animateImage
не вглобальная область действия animateImage
имеет доступ к переменным, которые не входят в глобальную область действия
Например: не будет работать:
function foo() {
var answer = 42;
function bar() {
alert(answer);
}
setTimeout('bar()', 1000);
}
foo();
На самом деле нет никакой причины использовать второе утверждение, поэтому вопрос об утечках памяти больше не актуален;)
И очевидно, что прямая ссылка на функцию будет «быстрее», чем eval
Использование строки.