JavaScript高级程序设计(第4版)阅读笔记

34 阅读3分钟
  1. JavaScript是一门用来与网页交互的脚本语言,包含以下三个组部分。 ECMAScript:由ECMA-262定义并提供核心功能。 文档对象模型(DOM):提供与网页内容交互的方法和接口。 浏览器对象模型(BOM):提供与浏览器交互的方法和接口。
  2. <script>元素有8个属性【async(只对外部脚本文件有效)、charset(使用 src 属性指定的代码字符集、大多数浏览器不在乎它的值)、crossorigin(配置相关请求的CORS(跨源资源共享)设置)、defer(只对外部脚本文件有效)、integrity(用于确保内容分发网络(CDN, Content Delivery Network)不会提供恶意内容。)、language(废弃、大多数浏览器都会忽略这个属性)、src(包含要执行的代码的外部文件)、type (可代替language、代码块中脚本语言的内容类型(也称MIME类型))】
  3. 使用<script>的方式有两种:通过它直接在网页中嵌入JavaScript代码,以及通过它在网页中包含外部JavaScript文件。
  4. 转义字符指在JavaScript中使用反斜杠“\”来向文本字符串添加特殊字符
  5. 与解释行内JavaScript一样,在解释外部JavaScript文件时,页面也会阻塞。(阻塞时间也包含下载文件的时间。)在XHTML文档中, 可以忽略结束标签
  6. 浏览器在解析这个资源时,会向 src 属性指定的路径发送一个 GET 请求,以取得相应资源
  7. 浏览器都会按照<script>在页面中 出现的顺序依次解释它们,前提是它们没有使用 deferasync 属性。
  8. 推迟执行脚本defer:表示脚本在执行的时候不会改变页面的结构;告诉浏览器应该立即开始下载,但执行应该推迟(对于XHTML文档,指定 defer 属性时应该写成 defer="defer"
  9. async defer 两者也都只适用于外部脚本,都会告诉浏览器立即开始下载。不过,与 defer 不同的是,标记为 async 的脚本并不保证能按照它们出现的次序执行
  10. 异步执行脚本async:给脚本添加 async 属性的目的是告诉浏览器,不必等脚本下载和执行完后再加载页面,同样也不必等到该异步脚本下载和执行后再加载其他脚本。正因为如此,异步脚本不应该在加载期间修改DOM。
  11. 动态加载脚本:在把 HTMLElement 元素添加到DOM且执行到这段代码 之前不会发送请求。默认情况下,以这种方式创建的<script> 元素是以一部方式加载的,相当于添加了async,不过这样做可能会有问题,因为所有浏览器都支持 createElement() 方法,但不是所有浏览器都支持 async 属性。因此,如果要统一动态脚本的加载行为,可以明确将其设置为同步加载(script.async = false