以下是我的index.html文件和script.js文件的示例,其中包括:
main();
function main() {
if (document.readyState == 'complete') {
console.log('test');
} else {
setTimeout(function() {
main();
}, 1000);
//setTimeout('main', 1000);
}
}

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="scripts.js"></script>
</head>
<body onload="javascript: main();">
</body>
</html>
&#13;
出于某种原因,setTimeout(function() { main(); }, 1000);
两次调用main()
,而setTimeout('main', 1000);
调用一次。两个人不应该产生相同的结果吗?我错过了什么?
答案 0 :(得分:2)
您的代码正在运行main()
两次。进入js文件的第一行,然后再次访问onload
标记的body
属性。
我建议您从onload
代码中删除body
处理程序。
答案 1 :(得分:1)
实际上并没有按照你的想法行事。 setTimeout('main', 1000)
无所事事,因为它是无效的代码。它应该是setTimeout(main, 1000)
。
它看起来两次运行的原因是因为您的onload="javascript: main();"
标记中有body
,并且还会在JavaScript顶部调用main();
。
答案 2 :(得分:1)
您的<body onload="javascript: main();">
已调用函数一次,您的JavaScript函数开头也称为main函数。