《JavaScript高级程序设计》第1-3章
第一章 JavaScript简介
1、JavaScript实现:由三个不同的部分组成:核心(ECMAScript)、文档对象模型(DOM)、文档对象模型(BOM)
2、ECMAScript
1)由ECMA-262定义的ECMAScript与Web浏览器没有依赖关系,Web浏览器只是ECMAScript实现的可能宿主环境之一。
2)规定了这门语言的几个组成部分:语法、类型、语句、关键字、保留字、操作符、对象。
3)ECMAScript兼容:支持ECMA-262描述的所有“类型、值、对象、属性、函数以及程序句法和语义”;支持Unicode字符标准;添加了ECMA-262没有描述的“更多类型、值、对象、属性和函数”;支持ECMA-262没有定义的“程序和正则表达式语法”。
3、文档对象模型(DOM):文档对象模型是针对XML但经过扩展用于HTML的应用程序编程接口(API)。DOM把整个页面映射为一个多层节点结构。
4、浏览器对象模型(BOM):处理浏览器窗口和框架,以及其他的一些扩展功能。弹出新浏览器窗口的功能;移动、缩放和关闭浏览器窗口的功能;提高浏览器详细信息的navigator对象;提供浏览器所加载页面的详细信息的location对象;提供用户显示器分辨率详细信息的screen对象;对cookie的支持;像XMLHttpRequest和IE的ActiveXObject这样的自定义对象。
第二章 在HTML中使用JavaScript
1、<script>元素的属性
1)async:可选,表示立即下载脚本,但可以同时进行页面的其他操作,async=”async”,只适用于外部文件,Firefox3.6、Safari5和Chrome有效
2)charset:可选,表示通过src属性指定的代码的字符集
3)defer:可选,表示脚本可以延迟到文档完全被解析和显示之后再执行,defer=”defer”,只适用于外部文件,IE4、Firefox3.5、Safari5和Chrome有效
4)language:已废弃
5)src:可选,表示包含要执行代码的外部文件
6)type(MIME类型):可选,表示编写代码使用脚本语言的内容类型,一般为type=text/javascript
2、<script>元素的使用:包含在<script>元素内部的JavaScript代码将被从上至下依次解释,在解释器对<script>元素内部的所有代码求值完毕以前,页面中的其余内容都不会被浏览器加载或显示。注意不要在非结束位置放置</script>,或者使用转义字符“\”。
1)直接在页面中嵌入JavaScript代码:<script type=”text/javascript”></script>
2)包含外部JavaScript文件:<script type=”text/javascript” src=”example.js”></script>,注意不要再包含嵌入代码。
3、<script>元素的位置
1)包含在<head>元素中
2)包含在<body>元素的末尾
4、文档模式
1)混杂模式:会让IE的行为与IE5相同
2)标准模式:会让IE的行为更接近标准行为
<!-- HTML 4.01严格型 -->
<!DOCTYPE HTML PUBLIC "-/W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!-- XHTML 1.0严格型 -->
<!DOCTYPE HTML PUBLIC "-/W3C//DTD XHTML 1.0 Strictl//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtm1-strict.dtd">
<!-- HTML5 -->
<!DOCTYPE HTML>
5、<noscript>元素:<noscript>可以包含能够出现在<body>中的任何HTML元素,<script>元素除外。浏览器不支持脚本或浏览器支持脚本但脚本被禁用时显示<noscript>中的内容。
第三章 基本概念
1、语法
1)区分大小写
2)标识符:第一个字符必须是一个字母,下划线和美元符号,其他字符可以是字母、下划线、美元符号或数字。ECMAScript标识符采用驼峰大小写格式,也就是第一个字母小写,剩下的每个单词的首字母大写
3)注释:单行注释//,多行注释/**/
4)严格模式:可以在网页顶部和函数体顶部添加"use strict",IE10+、Firefox4+、Safari5.1+、Opera12+和Chrome有效
5)语句:ECMAScript中的语句以一个分号结尾;在控制语句中使用代码块。
2、关键字和保留字
1)关键字:break、do、instanceof、typeof、case、else、new、var、catch、finally、return、void、continue、for、switch、while、debugger、function、this、with、default、if、throw、delete、in、try
2)保留字:abstract、enum、int、short、boolean、export、interface、static、byte、extends、long、super、char、final、native、synchronized、class、float、package、throws、const、goto、private、transient、debugger、implements、protected、volatile、double、import、public、let、yield
3)其他:eval、arguments
3、变量:定义变量都使用var操作符,用var操作符定义的变量将成为定义该变量的作用域中的局部变量;省略var操作符创建的变量是全局变量;可以使用一个语句定义多个变量,用逗号分隔
4、数据类型:基本数据类型:Undefined、Null、Boolean、Number和String;复杂数据类型:Object
1)typeof操作符
2)Undefined类型:用于区分空对象指针和未经初始化的变量
3)Null类型:值为null
4)Boolean类型:值为true或false
数值类型 |
转换为true的值 |
转换为false的值 |
Boolean |
true |
false |
String |
任何非空字符串 |
" "(空字符串) |
Number |
任何非零数字值(包括无穷大) |
0和NaN |
Object |
任何对象 |
null |
Underfined |
n/a |
undefined |
5)Number类型:十进制、八进制(第一位必须是0,后面是0~7)、十六进制(第一位必须是0x,后面是0~F)
6)String类型
7)Object类型
5、操作符
1)一元操作符:前置和后置的递增和递减操作符、一元加和减操作符
2)位操作符:按位非(NOT)、按位与(AND)、按位或(OR)、按位异或(XOR)、左移、有符号的右移、无符号的右移
3)布尔操作符:逻辑非、逻辑与、逻辑或
4)乘性操作符:乘法、除法、求模
5)加性操作符:加法、减法
6)关系操作符:小于、大于、小于等于、大于等于
7)相等操作符:相等和不相等、全等和不全等
8)赋值操作符:乘赋值(*=)、除赋值(/=)、模赋值(%=)、加赋值(+=)、减赋值(-=)、左移赋值(<<=)、有符号右移赋值(>>=)、无符号右移赋值(>>>=)
9)逗号操作符
6、语句
1)if语句
2)do-while语句
3)while语句
4)for语句
5)for-in语句:用于枚举对象的属性
6)lable语句:在代码中添加标签
7)break和continue语句
8)with语句:将代码的作用域设置到一个特定的对象中
9)switch语句
7、函数
1)参数
2)没有重载