【复习笔记01】回顾 JavaScript 诞生之初

205 阅读4分钟

所有能被 JavaScript 重写的,终将被 JavaScript 重写。


JavaScript 时间线.png

JavaScript 简史

javaScript 诞生于 1995 年。

当时因特网用户都使用速度仅为 28.8 kbit/s 的“猫”上网,想象一下:用户填写完一个表单,单击【提交】按钮,然后等待 30 秒,最终服务器返回消息说有一个必填字段没有填好……

走在技术革新最前沿的 Netscape 公司,决定着手开发一种客户端语言 LiveScript,用来处理这种简单的验证。

为了搭上媒体热搜 Java 的顺风车,临时把 LiveScript 改名为 JavaScript。

1996 年,发布 JavaScript 1.1

1997 年,TC39 完成了 ECMAScript 的新脚本语言的标准。

1998 年,ISO/IEC (国际标准化组织和国际电工委员会)也采用了 ECMAScript 作为标准 (即 ISO/IEC-16262)

一个完整的 JavaScript 实现由三个不同的部分组成

  • 核心(ECMAScript)
  • 文档对象模型(DOM)
  • 浏览器对象模型(BOM)

ECMAScript


ECMA-262 定义的只是这门语言的基础,而在此基础之上可以构建更完善的脚本语言。

ECMA-262 第 2 版主要是编辑加工。

ECMA-262 第 3 版标志着 ECMAScript 成为了一门真正的编程语言。
修改的内容涉及:

  • 字符串处理
  • 错误定义
  • 数值输出

新增的内容:

  • 正则表达式
  • 新控制语句
  • try-catch 异常处理的支持


ECMA-262 第 4 版进行全面的检核修订

ECMA-262 第 5 版发布于 2009 年 12 月 3 日。

浏览器 ECMAScript 兼容性 浏览器 ECMAScript 兼容性
Netscape Navigator 2 -- Opera 6 ~ 7.1 第2版
Netscape Navigator 3 -- Opera 7.2 第3版
Netscape Navigator 4 ~ 4.05 -- Opera 11.60 第5版
Netscape Navigator 4.06 ~ 4.79 第1版 Safari 1 ~ 2.0.x 第3版*
Netscape 6+(Mozilla 0.6.0+) 第3版 Safari 3.x 第3版
IE3 -- Safari 4.x ~ 5.x 第5版*
IE4 -- Safari 11.1+ 第5版
IE5 第1版 Safari 13 ~ 14 第6版
IE5.5 ~ IE7 第3版 Firefox 1 ~ 2 第3版
IE8 第5版* Firefox 3.0.x 第3版
IE9+ 第5版 Firefox 3.5 ~ 3.6 第5版*
Chrome 1+ 第3版 Firefox 4.0+ 第5版
Chrome 7.5+ 第5版 Firefox 6.8 ~ 7.9 第6版
Chrome 8.1 ~ 8.5 第6版
*不完全兼容的实现

DOM


DOM Level 1 于 1998 年 10 月成为 W3C 的推荐标准。主要是映射文档的结构。

DOM Level 2 引入新模块

  • DOM 视图(DOM Views)
  • DOM 事件(DOM Events)
  • DOM 样式(DOM Style)
  • DOM 遍历和范围(DOM Traversal and Range)


DOM Level 3 进一步扩展了 DOM

  • 在 DOM 加载和保存( DOM Load and Save)模块中定义
  • 在 DOM 验证( DOM Validation)模块中定义
浏览器 DOM 兼容性
Netscape Navigator 1. ~ 4.x --
Netscape 6+(Mozilla 0.6.0+) DOM1、DOM2(几乎全部)、DOM3(部分)
IE2 ~ IE4.x --
IE5 DOM1(最小限度)
IE5.5 ~ IE8 DOM1(几乎全部)
IE9 DOM1、DOM2、DOM3
Opera 1 ~ 6 --
Opera 7 ~ 8.x DOM1(几乎全部)、DOM2(部分)
Opera 9 ~ 9.9 DOM1、DOM2(几乎全部)、DOM3(部分)
Opera 10+ DOM1、DOM2、DOM3(部分)
Safari 1.0.x DOM1
Safari 2+ DOM1、DOM2(部分)
Chrome 1+ DOM1、DOM2(部分)
Firefox 1+ DOM1、DOM2(几乎全部)、DOM3(部分)

BOM


BOM 只处理浏览器窗口和框架。比如:

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


image.png

在 HTML 中使用 JavaScript


向 HTML 页面中插入 JavaScript 的主要方法,是使用 <script> 元素。该元素由 Netscape 创造,并在 Netscape Navigator 2 首先实现。其中 HTML 4.01 为 <script>  定义了下列 6 个属性:

  • async: 可选。同步下载脚本,不妨碍页面中其他操作。
  • charset: 可选。通过 src 属性指定的代码的字符集。
  • defer: 可选。脚本可以延迟到文档完全被解析和显示之后再执行。
  • language: 现已废弃。
  • src: 可选。包含要执行代码的外部脚本文件。
  • type: 编写代码使用的脚本语言的内容类型,一般为 text/javascript 。实际上,服务器在传送 JavaScript 文件时使用的 MIME 类型通常是 application/x-javascript


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

  • 直接在页面中嵌入 JavaScript 代码
  • 包含外部 JavaScript 文件

一般情况下,外部 JavaScript 文件带有 .js 扩展名。但这个扩展名不是必需的,因为浏览器不会检查包含 JavaScript 的文件的扩展名。这样一来,使用 PHP 等服务器端语言动态生成 JavaScript 代码也就成为了可能。


使用外部文件来包含 JavaScript 代码是目前公认最好的做法,外部的文件可以放在 CDN 上,使得用户在加载页面时更快。比起在 HTML 中嵌入,使用外部文件的人大多都会强调这几个优点:

  • 可维护性强
  • 可缓存
  • 适应未来

元素

用在当不支持 JavaScript 的浏览器或浏览器支持脚本,但脚本被禁用中显示替代的内容。除此之外的其他情况下,浏览器不会呈现 <noscript> 中的内容。

<html>
  <body>
    <noscript>
      <p> 本页面需要浏览器支持(启用) JavaScript</p>
    </noscript>
  </body>
</html>


image.png