zoukankan      html  css  js  c++  java
  • 小经验: html中 js脚本运行顺序:思路整理

      之前对html中的js脚本的运行顺序一直没有认真的去理清思路,只是把几个用到的脚本文件随便放在头部,后面的文本中调用。

      但是没有了解其运行顺序,在写代码是有时候会造成混乱。

      今天抽了点时间测试了一下。

      一、当有外联js时:

             1、外联js出现在<head>标签中的时候,这时候的脚本是最早运行的,同时也是按照文档顺序自上而下运行的。

       2、外联js出现在<body>标签中的时候,这时候脚本也是按照文档顺序运行的,与内嵌<body>的js脚本一样,执行到该语句就运行。

      二、当<head>标签中有js脚本段落时,如果没有在$(function(){ }); 中的话:它会立即执行。如果是在$(function(){ }); 里面, 但它将在文档加载完毕后执行的。

      三、<body>标签的js脚本段运行的顺序是: 当执行到该语句就运行。

      四、可能的话,js脚本的具体执行语句一般放在<body>最后面中,这样可以确定js脚本是在所有页面元素加载完后才执行的。


    PS: 对于一些公用函数的外联脚本,尽可能的放在<head>标签前部。 在一个js文件中,函数的调用可以不考虑它定义的顺序。但在多个js文件中,不同

      文件中的函数的相互调用就要考虑这些函数的定义顺序了,不然会出现undefined错误。

      2、可以概括的讲,在没有用 $(function(){}); 包住的js脚本将会按照document文档的顺序执行,并且对于其函数的调用没有顺序要求,只要定义了就可以调用。 而被$(function(){}); 包住的js脚本,则是在文档加载完毕后在按照document文档顺序执行,其优先级将会低于外部。

     

    见例子:

    <html>
    <head>
    <script type="text/javascript" src="js/jquery.js"></script>  // 最先加载
    <script type="text/javascript" src="js/first.js"></script>
    <script type="text/javascript" src="js/second.js"></script>
    <script type="text/javascript">
        var app = {};  // 紧跟着外联js运行
        $(function(){    // 将会在document文件加载完毕后运行,一般卸载这个js片段的尾部
            function a1(){
            
            }
            
            b();      // 调用文档底部的b()函数成功
        });
        var dpp = {};  // 紧跟app执行
        a1();       // 调用失败,a1()函数 未定义
        b();        // 调用失败,b() 函数为定义,因为不是出在同意js代码段,b()函数在这里还没有定义。
       a2();        // 调用成功,同一个js代码段的函数无先后顺序
        function a2(){
      }
    </script>
    
    </head>
    <body>
    
    <script type="text/javascript" src="js/body.js"></script>    // 程序执行到这里将会加载外联js
    <script type="text/javascript">                     
        a1();    // 将会调用失败,函数未定义
        a2();    // 能调用成功,函数已经在前面的js片段中定义了
       b();    // 成功调用本js代码片段的函数
    function b(){ 

    }
      
      $(function(){   // 这里面的代码将在前面的$(function(){}) 执行后在执行
         // 代码
      })
    </script> </body> </html>

     

  • 相关阅读:
    el表达式调用函数
    EL表达式
    mapReducer程序编写过程
    hadoop2.Xeclipse插件编译
    hadoop搭建与eclipse开发环境设置
    Sqoop-1.4.4工具import和export使用详解
    ZooKeeper典型应用场景一览
    hive原理和体系图解
    Linux中ssh免秘钥设置
    Annotation版本的HelloWorld
  • 原文地址:https://www.cnblogs.com/zjfazc/p/2643611.html
Copyright © 2011-2022 走看看