![]() |
1
2
是的,如果使用
如果您在开始或整个页面加载所有的javascript,您会看到一个请求出现的打嗝大约是50毫秒,对库文件或类似文件的解析可能超过100毫秒。100毫秒被用作标准,用户会注意到任何更大的内容都是“滞后”。 节省的时间可以忽略不计,但是如果页面加载时出现停顿,则用户体验的轻微损失可能会非常严重,具体取决于您的情况。 见 LABjs' site 关于延迟加载和解析的好处有很多文章和很好的解释。 |
![]() |
2
5
它们在加载时被完全解析。(当然,IE必须解析脚本才能知道每个函数体的结尾。)在开放源代码实现中,每个函数都被编译为字节码,甚至是机器代码,我认为IE的工作方式是一样的。 如果你有一个页面加载得太慢,你可以推迟加载100K你可能不会使用的脚本,这可能会帮助你的加载时间。或者不见下面的更新。 (琐事:像Sunspider这样的JS基准通常不度量解析和编译代码所需的时间。) 更新 _“自从我发布了这个答案,一切都变了!根据标准的要求,实现仍然在加载时解析每个脚本,至少足以检测到任何语法错误。但有时它们会推迟编译函数,直到第一次调用它们。 |
![]() |
3
3
因为定义一个函数实际上是一个操作,是的,整个javascript文件都会被解析,所有顶级操作都会被解释。函数内部的代码在调用之前不会实际执行,但会被解析。 例如:
在上面的示例中,所有内容都被解析,第1行和第2行被执行。但是,在调用第3行之前,它不会被执行。 你可以和你的用户玩一些“感性的游戏”,比如把脚本标签放在HTML的底部而不是顶部,这样浏览器就可以在收到下载和解析javascript的指令之前呈现页面的顶部。您也可以将函数定义推送到document.onload函数中,这样在整个页面加载到内存中之前,它们就不会被执行。但是,如果您的javascript将视觉样式应用于事物(如jquery ui东西),这可能会导致“非样式内容的闪现”。 |
![]() |
4
1
“下载”是什么意思?当它包含在标记中,或者当它通过xmlhttprequest下载时? 如果您的意思是通过脚本包含,那么IE一次解释所有JS文件。否则,您将无法调用该文件中的函数或查看语法错误消息。 如果您的意思是通过xmlhttprequest下载,那么您必须自己评估文件的内容。 |
![]() |
Softly · 单选按钮未按预期取值 1 年前 |
|
SlickRed · 我无法使用JS关注HTML元素 1 年前 |
![]() |
assembler · Nextjs没有处理发布请求 1 年前 |
|
BADRUM · 执行两个获取功能后,如何导航回页面? 1 年前 |
![]() |
Toniq · javascript为php保存多维数组 1 年前 |