Home > Web Front-end > JS Tutorial > Why is `setTimeout(alertMsg, 3000)` preferred over `setTimeout('alertMsg()', 3000)`?

Why is `setTimeout(alertMsg, 3000)` preferred over `setTimeout('alertMsg()', 3000)`?

Linda Hamilton
Release: 2024-11-22 08:39:14
Original
951 people have browsed it

Why is `setTimeout(alertMsg, 3000)` preferred over `setTimeout(

Differences between Using setTimeout with Quotes and Parentheses

When using setTimeout, you can call the function directly without quotes or parentheses, or you can wrap the function name in quotes with parentheses. Here's the breakdown:

With Parentheses:

setTimeout("alertMsg()", 3000);
Copy after login

In this case, "alertMsg()" is treated as a string, and setTimeout will execute this string as a script. This approach is not recommended as it can lead to unexpected behavior.

Without Quotes and Parentheses:

setTimeout(alertMsg, 3000);
Copy after login

This is the preferred way to pass a function reference to setTimeout. It directly passes alertMsg, which is assumed to be a function.

With Quotes Only:

setTimeout("alertMsg", 3000);
Copy after login

This is an alias for the previous example, but it's not recommended. It implies that you're passing a string to setTimeout, which can be misleading.

Additional Considerations for setTimeout

  • Pass function reference: Always pass a function reference or anonymous function as the first argument to setTimeout.
  • Pass arguments: To pass arguments to the function, use a callback or the less cross-browser compatible method of including them as arguments to setTimeout.
  • Callback context: By default, the context of the callback is the global object window. You can change it using bind.
  • Security: Avoid passing strings to setTimeout as it can execute arbitrary scripts.

The above is the detailed content of Why is `setTimeout(alertMsg, 3000)` preferred over `setTimeout('alertMsg()', 3000)`?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template