在程序中代码是一行一行执行的,html标签都是由渲染引擎来执行,代码执行时从上往下一行一行执行,当执行到alert(如下图),alert会阻塞后面代码的执行,当点击完确定之后,代码继续往下执行。

  javascript的内容同样可在外部进行引用,如下图所示,正常情况下执行结果和上面的内容相同,但当我们给html的script标签中加入async或者defer属性时,代码的执行过程也将会随之改变。

  async 为异步,顾名思义就是多个人同时做多件事,这里区分sync,sync为同步,就是一个人有序的做多件事情。因此在script标签中加入async属性后,程序执行时,外部引用的js文件内容和html中的代码同时进行。在这里需要注意,因为代码的执行速度不同,显示的效果有可能不同,在此是js内容被下载完成后立即执行。

  defer也会异步的下载去执行js内容,当然script标签中不会有两个相同功能的属性,它和async的区别是什么呢?defer和async的区别就是defer下载完js的内容后不会立即执行,直到html文档加载解析完成后才执行,下图就是使用defer的过程,代码虽然简单,但是这样可以清晰的表达defer的作用。

总结:前端项目中肯定少不了多多少少的js文件,defer和async就给我们在程序执行过程中提供了很方便的引用,更方便我们维护代码,避免代码中这一个那一个的js引用。

转载于:https://www.cnblogs.com/Codegenius/p/5835635.html

script标签中的async和defer相关推荐

  1. 浅谈script标签中的async和defer

    script标签用于加载脚本与执行脚本,在前端开发中可以说是非常重要的标签了. 直接使用script脚本的话,html会按照顺序来加载并执行脚本,在脚本加载&执行的过程中,会阻塞后续的DOM渲 ...

  2. script标签中async与defer的区别

    script标签内未设置async或者defer时: (1)script放在<head>,会阻塞HTML代码的解析和渲染,而放在<body>底部时,不会阻塞HTML代码的解析和 ...

  3. script标签中的crossorigin属性

    在前端监控逐渐完善的今天,页面中错误日志的上报可以说对我们的日常工作带来了极大的帮助. 而使用 window.onerror 事件来捕获 js 脚本中的错误信息是重要的手段 . 但是对于跨域的资源 , ...

  4. script标签中type为script type=text/x-template是个啥

    写过一点前端的都会碰到需要使用JS字符串拼接HTML元素然后append到页面DOM树上的情况,一般的写法都是使用+号以字符串的形式拼接,如果是短点的还好,如果很长很长的话就会拼接到令人崩溃了. 比如 ...

  5. script标签中defer和async的区别

    defer 和 async属性都是去异步加载外部的JS脚本文件,它们都不会阻塞页面的解析,其区别如下: defer为true:延迟加载脚本,在文档完成解析完成开始执行,并且在DOMContentLoa ...

  6. script标签中的defer和async属性

    默认情况下,浏览器是同步加载 JavaScript 脚本,即渲染引擎遇到<script>标签就会停下来,等到执行完脚本,再继续向下渲染.如果是外部脚本,还必须加入脚本下载的时间. 如果脚本 ...

  7. script 标签中的defer 和 async 属性

    浏览器在解析 HTML 的时候,如果遇到一个没有任何属性的 <script> 标签 ,就会暂停解析,先发送网络请求获取该 JS 脚本的代码内容,然后让 JS 引擎执行该代码,当代码执行完毕 ...

  8. html script src属性,动态修改script标签中的src属性存在的问题

    今天某个同事遇到一个诡异的问题,问题描述如下: 需求:通过脚本动态修改script标签的src来载入一段外部脚本并执行 实现方式(#1): document.getElementById('exter ...

  9. script标签中写html,html中script标签的详细介绍

    大家好,欢迎关注支持,谢谢!本篇将介绍html中script标签的详细用法,有兴趣的朋友可以了解一下! 一.前言 在html中,为了实现动态交互效果,我们经常会嵌入其它脚本语言(如:JavaScrip ...

最新文章

  1. swift_013(Swift 的运算符)
  2. 王爽汇编语言实验7一个很好的解法(转)
  3. WebRTC 之ICE浅谈
  4. numpy-array
  5. http 直接显示目录下文件_Win10支持直接访问Linux子系统文件:你的下一台Linux何必是Linux
  6. 2.3创建用户访问过滤器(安全性)
  7. leetcode扔鸡蛋问题总结
  8. 线性表的链式存储结构-----链表
  9. jeecgboot框架简介
  10. php超小免杀大马_最新过狗免杀php大马体积最小1KB吗
  11. python网站下载_python 下载整个网站
  12. layui实际项目使用过程中遇到的兼容性问题
  13. mysql二叉树_mysql如何创建二叉树
  14. ims应用服务器,IMS业务应用服务器部署方式分析.PDF
  15. 如何用好Visual SourceSafe?
  16. 云原生中间件RocketMQ-消费者消费模式之广播模式、偏移量offset解析
  17. 04 Nifty自定义带图片的下拉框
  18. 录音笔新燃点:AI+创新 实现应用场景再迭代
  19. 行业报告归档 2018.3.28
  20. discuz!Q免登陆蓝天采集器api发布模块

热门文章

  1. 远程接入-天翼5系统让ERP穿越时空!
  2. java8中的lambda用法实例
  3. ubuntu16.04 Linux+xfce4的文件夹出现两种背景颜色+文件夹中右键打开终端失灵了.
  4. windows7下面sublime中使用virtualenv切换python版本并运行
  5. 通俗地讲清楚fit_transform()和transform()的区别
  6. inode linux x64,又一次在64位ubuntu上安装iNode
  7. python-websocket-server hacking
  8. Tensorflow 官方版教程中文版
  9. 二十四种设计模式:装饰模式(Decorator Pattern)
  10. Notification之 - Android5.0实现原理(二)