Author:Nicholas C.Zakas
Translator:李松峰 曹力
JavaScript的实现由三部分组成:
1.核心(ECMAScript)
2.文档对象模型(DOM)
3.浏览器对象模型(BOM)
-
ECMAScript
由ECMA-262定义的ECMAScript与Web浏览器没有依赖关系。
这门语言本身并不包含输入和输出定义
它规定了这门语言的下列组成部分:
- 语法
- 类型
- 语句
- 关键字
- 保留字
- 操作符
- 对象
由ECMA-262定义,提供核心语言功能
-
DOM(文档对象模型)
是针对XML 但经过扩展用于HTML 的应用程序编程接口。
DOM把整个页面映射为一个多层节点结构。
DOM2级引入了下列新模块,也给出了众多新类型和新接口的定义:
1.DOM视图(DOM Views):定义了跟踪不同文档(例如:应用CSS之前和之后的文档)视图的接口
2.DOM事件(DOM Events):定义了事件和事件处理的接口
3.DOM样式(DOM Style):定义了基于CSS为元素应用样式的接口
4.DOM遍历和范围(DOM Traversal and Range):定义了遍历和操作文档树的接口
提供访问和操作网页内容的方法和接口
-
BOM(浏览器对象模型)
支持可以访问和浏览器窗口的浏览器对象模型
提供与浏览器交互的方法和接口
<script> 属性:
- async:可选。表示应该立即下载脚本,但不应妨碍页面中的其他操作,比如下载其他资源或等待加载其他脚本。只对外部脚本文件有效。
{指定async属性的目的是不让页面等待两个脚本文件之前执行,因此,确保两者之间互不依赖,为此,建议异步脚本不要在加载期间修改DOM} - charset:可选。表示通过src属性指定的代码的字符集。由于大多数浏览器会忽略它的值,因此这个属性很少有人用。
- defer:可选。表示脚本可以延迟到文档完全被解析和显示之后再执行。只对外部脚本文件有效。IE7及更早版本对嵌入脚本也支持这属性。
- language:已废弃
- src:可选。表示包含要执行代码的外部文件。
- type:可选。可以看成是language的替代属性;表示编写代码使用的脚本语言的内容类型(MIME类型)
可扩展超文本标记语言(XMTML),是将HTML作为XML的应用而重新定义的一个标准
JavaScript 在XHMTML中的用法 加CData片段
![](https://img.haomeiwen.com/i6023034/fa6b9b06856bc0f3.png)
嵌入代码与外部文件 比较
外部文件优点:1.可维护性 2.可缓存 3.适应未来
<noscript>
该元素只会在下列(1.浏览器不支持脚本2.浏览器支持脚本,但脚本被禁用)的情况下显示出来
</noscript>
ECMAScript 中的一切都区分大小写。
标识符:变量,函数,属性的名字,或者函数的参数。
ECMAScript标识符采用驼峰大小写格式。 .eg. myCar,doSomethingImportant
严格模式
"use strict" ————它是一个编译指示,用于告诉支持的JavaScript引擎切换到严格模式,也可以在函数内部使用
支持严格模式的浏览器:IE10+,Firefox4+,Safari5.1+,Opera12+,Chrome
给未经声明的变量赋值在严格模式下会导致抛出Reference Error 错误
在严格模式下,不能定义名为eval 或arguments的变量,否则会导致语法错误。
数据类型
5种 基本数据类型:Undefined、Null、Boolean、Number、String
1种 复杂数据类型:Object (本质上是由一组无序的名值对 组成)
- typeof 操作符
![](https://img.haomeiwen.com/i6023034/fa44ba69c9ce39db.png)
注:有些时候,typeof 操作符会返回一些令人迷惑但技术上却正确的值。比如,调用typeof null 会返回"object",因为特殊值null被认为是一个空的对象引用。
Safari 5-,Chrome7-在对正则表达式调用typeof操作符时会返回"funcition",而其他浏览器在这种情况下会返回"object"
- Undefined————在使用var 声明变量但未对其加以初始化
- Null————表示一个空对象指针
- Boolean————两个字面值:true 和 false
- Number————使用IEEE754格式来表示整点和浮点数值
- String————用于表示由零或多个16位Unicode字符组成的字符序列,即字符串
- Object————一组数据和功能的集合 ,即对象
![](https://img.haomeiwen.com/i6023034/1d142c4e026ac917.png)
ps:n/a(not applicable ) 不适用
e表示法(科学计数法)
var floatNum=3.125e7; //等于31250000
网友评论