检查body标签时出现意外的JavaScript无限循环

Jin*_*inx 0 javascript preloader infinite-loop document-body

我打算使用ASAP脚本来检查是否加载了body标签,但它会导致整个页面冻结.

这里是:

while (!document.body)
    if (document.body) console.log('loaded');
Run Code Online (Sandbox Code Playgroud)

这当然在所有情况下都无法正常工作,但我很困惑为什么这会变成无限循环并冻结页面.

Bar*_*mar 7

Javascript是单线程的.当该循环正在运行时,没有其他运行,因此无法加载正文.循环体中没有任何东西可以改变它的值document.body,所以如果它在你启动时没有设置,它就永远不会.

  • 我认为他们是一样的.页面中的所有内容都有效地在单个线程中运行. (2认同)