《JavaScript高级程序设计(第3版)》读书笔记1

325 阅读2分钟

第1章 JavaScript简介

JavaScript是一种专为与网页交互而设计的脚本语言

image.png

一、ECMAScript

ECMA-262定义ECMAScript语言的标准,ECMAScript就是对实现该标准的语言描述。ECMAScript的宿主环境包含Web浏览器、Node等,宿主环境不仅提供基本的ECMAScript实现,也会提供该语言的扩展(DOM、BOM),以便语言与环境对接交互,提供更多功能。

ECMA-262规定了这门语言的组成部分:

  • 语法
  • 类型
  • 语句
  • 关键字
  • 保留字
  • 操作符
  • 对象

二、DOM

文档对象模型(Document Object Model)用于HTML的应用程序编程接口,DOM把整个页面映射为一个多层节点结构。借助DOM提供的API,可以删除、添加、替换或修改任何节点。

三、BOM

浏览器对象模型(Browser Object Model)用于访问和操作浏览器窗口。

  • 弹出新浏览器窗口的功能;
  • 移动、缩放和关闭浏览器窗口的功能;
  • 提供浏览器详细信息的navigator对象;
  • 提供浏览器所加载页面的详细信息的location对象;
  • 提供用户显示器分辨率详细信息的screen对象;
  • 对cookies的支持;
  • XMLHttpRequest和IE的ActiveXObject这样的自定义对象。

第2章 在HTML中使用JavaScript——<script>

一、HTML 5为<script>定义了下列属性:

  • async:可选。表示应该立即下载脚本,但不应妨碍页面中的其他操作,比如下载其他资源或等待加载其他脚本。只对外部脚本文件有效。
  • defer:可选。表示脚本可以延迟到文档完全被解析和显示之后再执行。只对外部脚本文件有效。
  • src:可选。表示包含要执行代码的外部文件。
  • type:必选。表示编写代码使用的脚本语言的内容类型(也称为MIME类型)。虽目前type属性的值依旧还是text/javascript。不过,这个属性并不是必需的,如果没有指定这个属性,则其默认值仍为text/javascript

二、使用<script>元素的方式有两种:

  • 直接在页面中嵌入JavaScript代码:包含在<script>元素内部的JavaScript代码将被从上至下依次解释,在解释器对<script>元素内部解释以前,页面中的其余内容都不会被浏览器加载或显示。
<script type="text/javascript"> 
function sayHi(){ 
    alert("Hi!"); 
} 
</script>
  • 包含外部JavaScript文件:src属性的值是一个指向外部JavaScript文件的链接,与解析嵌入式JavaScript代码一样,在解析外部JavaScript文件(包括下载该文件)时,页面的处理也会暂时停止。只要不存在deferasync属性,浏览器都会按照<script>元素在页面中出现的先后顺序对它们依次进行解析。
<script type="text/javascript" src="example.js"></script>

三、<script>标签的位置

如果<script><head>中,则需等到全部JavaScript代码都被下载、解析和执行后,才能开始呈现页面的内容(浏览器在遇到<body>标签时才开始呈现内容)。这对于那些需要很多JavaScript代码的页面来说,这无疑会导致浏览器在呈现页面时出现明显的延迟。因此,一般把<script>放在<body>页面内容后。

四、defer、async(只适用于外部脚本文件)

  • defer:脚本会被延迟到页面解析完毕后再运行,相当于告诉浏览器立即下载,但延迟执行。HTML5规范要求脚本按照它们出现的先后顺序执行,因此第一个延迟脚本会先于第二个延迟脚本执行。
  <head>
    <title>Example HTML Page</title>
    <script type="text/javascript" defer="defer" src="example1.js"></script>
    <script type="text/javascript" defer="defer" src="example2.js"></script>
  </head>
  • async:脚本会被延迟到页面解析完毕后再运行,相当于告诉浏览器立即下载,但延迟执行。但并不保证按照指定它们的先后顺序执行。
<head>
    <title>Example HTML Page</title>
    <script type="text/javascript" async src="example1.js"></script>
    <script type="text/javascript" async src="example2.js"></script>
  </head>

五、文档模式

  • 混杂模式:如果在文档开始处没有发现文档类型声明,则所有浏览器都会默认开启混杂模式,在不同浏览器下差异大。
  • 标准模式:
<!DOCTYPE html>