Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
html文件中javascript文件的生命周期_Javascript_Html_Browser_V8 - Fatal编程技术网

html文件中javascript文件的生命周期

html文件中javascript文件的生命周期,javascript,html,browser,v8,Javascript,Html,Browser,V8,我有一个非常基本的问题,关于浏览器的javascript引擎如何执行嵌入html文件中的javascript文件。我假设,首先呈现html页面,然后执行javascript。我的问题是,当引擎到达js文件的最后一行时,下一步是什么?。是否所有事件的回调方法都保持活动状态,即使在命中最后一行之后,或者在命中最后一行之后,与js文件相关的所有内容都从内存中清除并且js终止?。或者js编写器必须注意在js文件中放入一个循环,以便js能够正常工作,并且最后一行永远不会被击中 是否所有事件的回调方法即使在

我有一个非常基本的问题,关于浏览器的javascript引擎如何执行嵌入html文件中的javascript文件。我假设,首先呈现html页面,然后执行javascript。我的问题是,当引擎到达js文件的最后一行时,下一步是什么?。是否所有事件的回调方法都保持活动状态,即使在命中最后一行之后,或者在命中最后一行之后,与js文件相关的所有内容都从内存中清除并且js终止?。或者js编写器必须注意在js文件中放入一个循环,以便js能够正常工作,并且最后一行永远不会被击中

是否所有事件的回调方法即使在到达最后一行后仍保持活动状态

js编写器是否必须注意在js文件中放入一个循环,以便js能够正常工作,并且不会命中最后一行

没有;事实上,这样一个无休止的循环将提供非常糟糕的用户体验

更一般地说:尝试这些东西并亲自体验是非常容易的。您只需要一个浏览器和一个文本编辑器:-)

(甚至只是像codepen.io或jsfiddle.net这样的浏览器内编辑器或其他一些编辑器。)

这个问题已经在这个链接中得到了详细的回答,只要页面被加载,它就不会终止。javascript引擎维护并监视要执行的代码队列。当队列中有东西时,它就会被执行。当队列为空时,is将等待队列停止为空。页面初始化将脚本排队运行。这些脚本可以设置各种情况,以便稍后将函数添加到队列中。当发生导航时,会触发一些事件,导致更多的东西排队。其中一个事件是卸载页面。卸载期间,队列停止处理,内存释放。当然。只要在某个地方有对它们的引用,它们就会一直存在。(该引用不一定必须在代码中。例如,浏览器保留对事件处理程序回调的内部引用。)这是未定义的。可以是任意顺序,并且在不同浏览器中可能有所不同。(尽管我发现它们往往是最新到最老的。)