1 JavaScript实现
一个完整的JavaScript包括ECMAScript(js标准,核心)、DOM、BOM三部分。
DOM(Document Object Model)把整个页面映射成一个多层节点结构,开发人员可以根据DOM提供的API删除、增加、修改、替换任何节点。
BOM(Browser Object Model)处理浏览器窗口和框架。
2.1 <script>元素
1)type属性为该标签必需传入的,值通常写作“text/javascript”。
2)src属性是可选的,表示包含要执行程序的外部文件。
3)使用该标签的方法有两种:直接在页面嵌入JS代码和包含外部JS代码文件。
嵌入JS代码:<script type="text/javascript">/* do something... */</script>
包含外部JS代码文件a.js:<script type="text/javascript" src="a.js"></script>
4)<script>标签按照惯例会放到<head>标签中,但是这种情况下,网页会在解析了所有JS代码后,再显示页面,若JS代码多的话会影响网页显示速度。所以,现在多把<script>放到<body>标签的所有网页代码后面。
2.2 文档模式
IE引入了文档模式概念,分为混杂模式与标准模式。混杂模式中JS效果相当于IE5,不完全支持JS标准。标准模式中JS效果则相当于标准规定,其中存在准标准模式的概念,大致与标准模式相同。IE8引入超级标准模式,展示与标准模式相同,只是它支持向前兼容。
2.3 <noscript>元素
当浏览器不支持JS脚本解释时,若存在<noscript>标签,会将该标签中包含的信息展示出来!
3 基本概念
3.1 语法
标识符:由字母、下划线、美元符号开始,其后跟字母、数字、下划线、美元符号。为了与ECMAScript标准一直,使用驼峰大小写格式,首字母小写,后面每个单词首字母大写。
3.2 关键字和保留字
3.3 变量
3.4 数据类型
JS标准的数据类型有Undefined、Null、Number、String、Boolean、Object。
变量声明未赋值的情况下,变量值为特殊值undefined。
Null类型用于保存空对象指针,变量值为特殊值null。当确定定义一个对象变量而又没有值可供赋值使用时,可以为其赋值null,以标志该变量关联对象。
Boolean类型存在两个特殊字面值true和false。
数值类型的变量的使用范围在 Number.MIN_VALUE 到 Number.MAX_VALUE 之间,若变量超出这个范围,则会被记为 Infinity 或者 -Infinity。使用isFinite(i)函数可以判断变量i是否被记为无穷数了。特殊数值 NaN 用于表示一个本来应返回数值但却没有返回成数值的情况。isNaN(i)可用于判断变量i是否是数值。
将变量转换成数值型的函数有:Number()、parseInt()、parseFloat()。通常我们用后两种。
字符串类型可以使用单引号或者双引号表示。属性 length 可表示字符串长度。
3.5 操作符
逻辑与与逻辑或都是短路操作。
求模就是取余操作,操作符为%。
在比较操作符中,字符串比较的是每个字母的ascii码值大小。对象则是使用valueOf()函数转换后比较。
等于操作符(==)、不等于操作符(!=)会转换两个比较数后在比较;而全等操作符(===)、不全等操作符(!==)则进行不转换比较。
3.6 语句
1)if语句
2)do-while语句
3)while语句
4)for语句
5)for-in语句:可以用来枚举对象的属性
6)label语句
使用语法为
label : statement
定义了标签label后,可以被引用在break或者continue语句中,用来返回代码中定义了label的地方。
7)break或continue语句
8)with语句
使用语法为
with(expression)
statement
expression通常为一个对象名,statement中默认引用该对象。
with用的多了会导致性能下降。
9)switch语句
使用语法为
switch(expression) {
case value: statement
break;
default: statement
}
JS中的expression可以是任何数据类型。
3.7 函数
1)函数参数:JS中的所有参数都是保存到类似数组的对象arguments中,进行传递和使用的。
2)没有重载:若定义了两个同名函数(函数列表是否相同不关心),后一个定义的函数会覆盖前一个定义的函数,就好像前一个定义的函数不存在一样。
一个完整的JavaScript包括ECMAScript(js标准,核心)、DOM、BOM三部分。
DOM(Document Object Model)把整个页面映射成一个多层节点结构,开发人员可以根据DOM提供的API删除、增加、修改、替换任何节点。
BOM(Browser Object Model)处理浏览器窗口和框架。
2.1 <script>元素
1)type属性为该标签必需传入的,值通常写作“text/javascript”。
2)src属性是可选的,表示包含要执行程序的外部文件。
3)使用该标签的方法有两种:直接在页面嵌入JS代码和包含外部JS代码文件。
嵌入JS代码:<script type="text/javascript">/* do something... */</script>
包含外部JS代码文件a.js:<script type="text/javascript" src="a.js"></script>
4)<script>标签按照惯例会放到<head>标签中,但是这种情况下,网页会在解析了所有JS代码后,再显示页面,若JS代码多的话会影响网页显示速度。所以,现在多把<script>放到<body>标签的所有网页代码后面。
2.2 文档模式
IE引入了文档模式概念,分为混杂模式与标准模式。混杂模式中JS效果相当于IE5,不完全支持JS标准。标准模式中JS效果则相当于标准规定,其中存在准标准模式的概念,大致与标准模式相同。IE8引入超级标准模式,展示与标准模式相同,只是它支持向前兼容。
2.3 <noscript>元素
当浏览器不支持JS脚本解释时,若存在<noscript>标签,会将该标签中包含的信息展示出来!
3 基本概念
3.1 语法
标识符:由字母、下划线、美元符号开始,其后跟字母、数字、下划线、美元符号。为了与ECMAScript标准一直,使用驼峰大小写格式,首字母小写,后面每个单词首字母大写。
3.2 关键字和保留字
3.3 变量
3.4 数据类型
JS标准的数据类型有Undefined、Null、Number、String、Boolean、Object。
变量声明未赋值的情况下,变量值为特殊值undefined。
Null类型用于保存空对象指针,变量值为特殊值null。当确定定义一个对象变量而又没有值可供赋值使用时,可以为其赋值null,以标志该变量关联对象。
Boolean类型存在两个特殊字面值true和false。
数值类型的变量的使用范围在 Number.MIN_VALUE 到 Number.MAX_VALUE 之间,若变量超出这个范围,则会被记为 Infinity 或者 -Infinity。使用isFinite(i)函数可以判断变量i是否被记为无穷数了。特殊数值 NaN 用于表示一个本来应返回数值但却没有返回成数值的情况。isNaN(i)可用于判断变量i是否是数值。
将变量转换成数值型的函数有:Number()、parseInt()、parseFloat()。通常我们用后两种。
字符串类型可以使用单引号或者双引号表示。属性 length 可表示字符串长度。
3.5 操作符
逻辑与与逻辑或都是短路操作。
求模就是取余操作,操作符为%。
在比较操作符中,字符串比较的是每个字母的ascii码值大小。对象则是使用valueOf()函数转换后比较。
等于操作符(==)、不等于操作符(!=)会转换两个比较数后在比较;而全等操作符(===)、不全等操作符(!==)则进行不转换比较。
3.6 语句
1)if语句
2)do-while语句
3)while语句
4)for语句
5)for-in语句:可以用来枚举对象的属性
6)label语句
使用语法为
label : statement
定义了标签label后,可以被引用在break或者continue语句中,用来返回代码中定义了label的地方。
7)break或continue语句
8)with语句
使用语法为
with(expression)
statement
expression通常为一个对象名,statement中默认引用该对象。
with用的多了会导致性能下降。
9)switch语句
使用语法为
switch(expression) {
case value: statement
break;
default: statement
}
JS中的expression可以是任何数据类型。
3.7 函数
1)函数参数:JS中的所有参数都是保存到类似数组的对象arguments中,进行传递和使用的。
2)没有重载:若定义了两个同名函数(函数列表是否相同不关心),后一个定义的函数会覆盖前一个定义的函数,就好像前一个定义的函数不存在一样。