引言
在JavaScript中setout中函数不加双引号引发错误的问题-CSDN博客
上篇文章中笔者讲解了settimeout全局函数,关于引用函数时加不加双引号会使得延迟是否正常出现的“bug”
这里再详细阐述一下
实现方法
首先打开vscode,分别写入如下代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>text</title>
</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>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>text</title>
</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>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>text</title>
</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>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>text</title>
</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?