为什么javascript在脚本标记和js文件中有不同的性能

为什么javascript在脚本标记和js文件中有不同的性能,javascript,jquery,html,Javascript,Jquery,Html,我正在使用一个jquery函数,它可以为我的主页标题设置动画。当我在html中执行javascript时,一切都很好(文本立即动画化)。当我将函数移动到一个单独的.js文件中时,文本首先闪烁,然后进行动画处理 正在运行javascript的html: <h1><a href="#home">This i</a></h1> 我的问题是: 为什么将javascript放在html文件的脚本标记中时与放在单独的.js文件中时表现不同 有没有办法将函数保

我正在使用一个jquery函数,它可以为我的主页标题设置动画。当我在html中执行javascript时,一切都很好(文本立即动画化)。当我将函数移动到一个单独的.js文件中时,文本首先闪烁,然后进行动画处理

正在运行javascript的html:

<h1><a href="#home">This i</a></h1>
我的问题是:

  • 为什么将javascript放在html文件的脚本标记中时与放在单独的.js文件中时表现不同
  • 有没有办法将函数保存在.js文件中并修复延迟

  • 谢谢

    当放入一个单独的
    .js
    文件时,它要求浏览器发出一个单独的HTTP请求(如果资源尚未缓存)。这意味着网络成了敌人。如果您在服务器上正确设置了缓存,这应该不会有太大问题


    除此之外,Javascript的解释/编译也是一样的。

    这不仅是网络流量(下载额外的js),而且是执行Javascript时的点

    如果你有密码

    <div id="div1">
    ......
    </div>
    <script type="text/javascript">
    myfunction();
    </script>
    <div id="div2">
    ....
    </diV>
    
    
    ......
    myfunction();
    ....
    
    myfunction
    将在创建div1之后但在div2之前运行


    但是,如果您从header中包含的.js运行某些函数,它将在加载整个页面后运行(我假设您使用的是
    $.ready()
    或类似的东西)。因为浏览器在页面加载过程中显示元素(除了您将所有内容都放在
    表中
    ),所以效果是您会看到文本闪烁。

    如何
    延迟
    异步
    缩短延迟?@jfriend00是的,我希望我知道这是什么意思。我会删除它。你能想出其他的解释吗?我不确定我能想到任何其他可能造成“延迟”的东西,HTML中的节在哪里?当您将文件移动到一个单独的.js文件时,您会在HTMl中的什么位置包含该文件?您可能会感兴趣。以下是谷歌开发者网络的文章列表,解释了浏览器的加载顺序,解析和呈现JavaScript,这可能有助于回答您的第一个问题。您在准备就绪时还执行什么?脚本部分位于HTML文件的底部,当我将其移动到.js文件时,该文件包含在HTML文件的头部。我还有一些其他函数在onReady上执行,但这是第一个。如果您更改脚本的位置,那么这是另一个可能影响其执行的变量。在这两种情况下,他都使用
    $(function(){…})
    ,这是
    $.ready()
    .hmmm的缩写,因此他可能会在$.ready队列中添加更多内容,因此,HTML中直接延迟的代码首先排队,因此无论如何都会首先执行。我不知道还能是什么,你可能是对的。检查的一种方法是将加载
    .js
    文件移动到HTML文件的末尾,并直接运行代码(也就是说,不在其周围使用
    $(function(){…})
    )。通常,如果要立即修改元素,以便用户不会注意到它,则应将脚本标记直接放在后面。但在OP的情况下,两个调用都被延迟。我想知道这是否是一种困惑,而否决票是对不猜测的惩罚。。。
    $(function() {
            $(".letter-container h1 a").lettering();
    });
    
    <div id="div1">
    ......
    </div>
    <script type="text/javascript">
    myfunction();
    </script>
    <div id="div2">
    ....
    </diV>