Javascript 编译是在脚本解析后立即进行还是延迟进行?
考虑HTML页面中包含的脚本Javascript 编译是在脚本解析后立即进行还是延迟进行?,javascript,Javascript,考虑HTML页面中包含的脚本 <script> function fn(){ // code return new Function(); } </script> 函数fn(){ //代码 返回新函数(); } 当上面的HTML页面文档在我的浏览器窗口中呈现时,我可以称之为解析文档吗 编译是否与解析文档同时发生?这两个过程之间到底有什么区别 语句returnnewfunction()是否与fn()的解析和编译同时进行 脚本
<script>
function fn(){
// code
return new Function();
}
</script>
函数fn(){
//代码
返回新函数();
}
returnnewfunction()
是否与fn()
的解析和编译同时进行脚本
标记是DOM树的一部分
语句return new Function()的解析和编译是否与fn()的解析和编译同时进行
在代码中调用函数fn()
时将返回新函数()。如果从未调用它,那么只会有一个对函数的陈旧引用。您必须调用fn()
,以便它返回新函数或任何您要返回的对象。作为一种优化技术,它是延迟的,但这对您来说并不重要。为什么您想知道?在页面上紧随其后的HTML元素加载到DOM之前,脚本可能会运行。对于初学者来说,这通常是一个问题,他们发现他们试图操纵的元素没有定义。通常的做法是将javascript附加到文档的load
事件,以确保所有DOM元素在操作它们之前都已就位。不过,如果你想利用这种跑步的渴望,我不确定。这取决于你想做什么。@Paul:不,不,我不是初学者,我知道在哪里包含脚本window.onload,$(document.ready().1。对2.紧接着,一旦脚本标记被解析(内联)或加载(外部延迟)或加载,先前的标记被加载并解析(外部同步)。3.fn()是用脚本标签解析的,但是函数()的结果在fn被执行之前是不存在的。根据我的理解,任何函数都不会被超越,除非调用它(运行时)。@ShirgillAnsari yep。我看过你创建的工具。相信我,这真是太神奇了。@ShirgillAnsari非常感谢,我很高兴它对你有用!