在JavaScript中setout中函数不加双引号引发错误的问题-CSDN博客
上篇文章中笔者讲解了settimeout全局函数,关于引用函数时加不加双引号会使得延迟是否正常出现的“bug”
这里再详细阐述一下
首先打开vscode,分别写入如下代码
- html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>texttitle>
- head>
- <body>
-
- <p>点击按钮,等待 3 秒后弹出 "Hello" 。p>
-
-
- <button onclick="myFunction()">点我button>
-
-
- <script>
- var myVar;
-
- function myFunction() {
- myVar = setTimeout(chu(), 3000);
- }
- function chu(){ alert("Hello") ;}
-
- script>
-
- body>
- html>
- html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>texttitle>
- head>
- <body>
-
- <p>点击按钮,等待 3 秒后弹出 "Hello" 。p>
-
-
- <button onclick="myFunction()">点我button>
-
-
- <script>
- var myVar;
-
- function myFunction() {
- myVar = setTimeout("chu()", 3000);
- }
- function chu(){ alert("Hello") ;}
-
- script>
-
- body>
- html>
- html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>texttitle>
- head>
- <body>
-
- <p>点击按钮,等待 3 秒后弹出 "Hello" 。p>
-
-
- <button onclick="myFunction()">点我button>
-
-
- <script>
- var myVar;
-
- function myFunction() {
- myVar = setTimeout(chu, 3000);
- }
- function chu(){ alert("Hello") ;}
-
- script>
-
- body>
- html>
- html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>texttitle>
- head>
- <body>
-
- <p>点击按钮,等待 3 秒后弹出 "Hello" 。p>
-
-
- <button onclick="myFunction()">点我button>
-
-
- <script>
- var myVar;
-
- function myFunction() {
- myVar = setTimeout("chu", 3000);
- }
- function chu(){ alert("Hello") ;}
-
- script>
-
- body>
- html>
可以看到,这四处代码仅有的不同便是settimeout函数中对chu函数的引用方式,其中第一种不能正常延时,其余三种均可正常实现功能
具体演示视频如下
发现了个Javascript中执行settimeout时的小bug?