Это не"неправильно", просто это не обязательно "правильно", и это, безусловно, не рекомендуется.
Первый параметр setTimeout()
функции может быть строкой или ссылкой на функцию / выражением функции.
Если вы передадите строку, она будет медленнее, потому что фактически вы делаете eval()
, что не рекомендуется . Однако более важным, чем скорость, является то, что область, в которой выполняется код в строке, может не соответствовать ожидаемой (и может не совпадать в разных браузерах).
Передавая ссылку на функцию / выражение функции, можно избежать этих проблем.
«Правильный» синтаксис для вашего примера:
setTimeout(otherFunction, 2000);
Обратите внимание, что после otherFunction
круглых скобок нет - в противном случае он немедленно вызвал бы otherFunction()
и передал бы возвращаемое значение из этой функции в setTimeout()
.
Если вам нужно передать параметры в вашу функцию, вы можете обернуть ее в анонимную функцию:
setTimeout(function() {
otherFunction(param1, param2);
}, 2000);
Это может показаться неуклюжим по сравнению с setTimeout("otherFunction(param1,param2)", 2000)
, но, опять же, оно позволяет избежать проблем с областью, где определены otherFunction
, param1
и param2
.