ES5

ES5

个人的回顾整理学习。

语法

基本语法包括数据类型,操作符,语句,函数

数据类型:Number,String,Boolean,Null,Undefined,Array,Object

操作符:算数操作符,布尔操作符,赋值操作符

语句:if语句,for语句,case语句等

类型

Undefined 类型

有且只有一个值称为undefined。任何没有被赋值的变量都有undefined值。

Null

有且只有一个值null

Boolean 类型

表示逻辑实体 true或false

String 类型

字符串类型是所有有限的零个或多个 16 位无符号整数值(“元素”)的有序序列

Number 类型

数值类型拥有 18437736874454810627(即,264-253 +3)个值,非数字值 NaN

特殊值:正无穷和负无穷 +Infinity -Infinity

Object 类型

属性的集合。

引用规范类型

用来说明 delete,typeof,赋值运算符这些运算符的行为

类型转换

ToPrimitive

接受一个值和一个可选类型作为参数,可以把值转换为非对象类型

输入类型 结果
Undefined 结果等于输入的参数(不转换)
Null 结果等于输入的参数(不转换
Boolean 结果等于输入的参数(不转换
Number 结果等于输入的参数(不转换
String 结果等于输入的参数(不转换
Object 返回该对象的默认值。(调用该对象的内部方法[[DefaultValue]]一样)

ToBoolean

将其参数转换为布尔值类型的值

输入类型 结果
Undefined false
Null false
Boolean 结果等于输入的参数(不转换)
Number 如果参数是 +0, -0, 或 NaN, 结果为 false , 否则结果为 true
String 如果参数参数是空字符串(其长度为零),结果为 false,否则结果为 true
Object true

ToNumber

将参数转换为数值类型的值

输入类型 结果
Undefined NaN
Null +0
Boolean 如果参数是 true,结果为 1; 如果参数是 false,此结果为 +0
Number 结果等于输入的参数(不转换)
String
Object 设 原始值 为 ToPrimitive( 输入参数 , 暗示 数值类型)。 返回 ToNumber( 原始值 )

ToInteger

将参数转化为整数值

  1. 对输入参数调用 ToNumber
  2. 如果 Result(1) 是 NaN,返回 +0
  3. 如果 Result(1) 是 +0 ,-0,+∞,或 -∞,返回 Result(1)
  4. 计算 sign(Result(1)) * floor(abs(Result(1)))
  5. 返回 Result(4)

ToString

将其参数转换为字符串类型的值

输入类型 结果
Undefined “undefined”
Null “null”
Boolean 如果参数是 true,那么结果为 “true”。如果参数是 false,那么结果为 “false”
Number
String 结果等于输入的参数(不转换)
Object 1. 调用 ToPrimitive( 输入参数 , 暗示 字符串类型)。 2. 调用 ToString(Result(1))。 3. 返回 Result(2)。

ToObject

将其参数转换为对象类型的值

输入类型 结果
Undefined 抛出 TypeError 异常
Null 抛出 TypeError 异常
Boolean 创建一个新的Boolean对象,其 [[PrimitiveValue]]属性被设为该布尔值的值
Number 创建一个新的Number对象,其[[PrimitiveValue]]属性被设为该布尔值的值
String 创建一个新的String对象,其 [[PrimitiveValue]] 属性被设为该布尔值的值
Object 结果是输入的参数(不转换)

表达式

主值表达式

this关键字

this 关键字执行为当前执行环境的 ThisBinding

标识符引用
字面量引用
数组初始化
对象初始化
分组表达式

一元运算符

delete 运算符
typeof 运算符
val 类型 结果
Undefined “Undefined”
Null “null”
Boolean “boolean”
Number “number”
String “string”
Object(原生,且没有实现call) “object”
Object(原生或者宿主实现call) “function”

语句

if 语句

1
if ( Expression ) Statement else Statement

迭代语句

do-while 语句

循环至少执行一次,即便条件为 false,因为代码块是在条件语句判断前执行。

1
2
3
4
5
6
7
8
9
10
do Statement while ( Expression )
var text = ""
var i = 0;
do {
text += "<br>数字为 " + i;
i++;
}
while (i < 5) {
document.getElementById("demo").innerHTML = text;
}
while语句

while 循环会在指定条件为真时循环执行代码块。

1
while ( Expression ) Statement
for 语句
1
for ( ExpressionNoInopt ; Expressionopt ; Expressionopt) Statement
for-in 语句
1
2
3
4
5
6
7
8
9
for ( LeftHandSideExpression in Expression ) Statement
var person = {fname:"John", lname:"Doe", age:25};
var text = "";
var x;
for (x in person) {
text += person[x];
}

结果:John Doe 25

总结:for/in 语句用于循环对象属性。循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作。

  • for - 循环代码块一定的次数
  • for/in - 循环遍历对象的属性
  • while - 当指定的条件为 true 时循环指定的代码块
  • do/while - 同样当指定的条件为 true 时循环指定的代码块

注意:不要使用 for/in 语句来循环数组的索引,你可以使用 for 语句替代。

continue 语句

continue 语句中断循环中的迭代,如果出现了指定的条件,然后继续循环中的下一个迭代。 该例子跳过了值 3

1
2
3
4
5
6
continue;
for (i=0;i<=10;i++)
{
if (i==3) continue;
x=x + "The number is " + i + "<br>";
}

break 语句

break 语句可用于跳出循环

1
2
3
4
5
for (i=0;i<10;i++)
{
if (i==3) break;
x=x + "The number is " + i + "<br>";
}

总结:break 语句可用于跳出循环。

continue 语句跳出循环后,会继续执行该循环之后的代码(如果有的话)

return 语句

return 语句会终止函数的执行并返回函数的值

1
2
3
4
return ;
function myFunction() {
return Math.PI;
}

with 语句

1
with ( Expression ) Statement

switch 语句

switch 语句用于基于不同的条件来执行不同的动作。

switch 语句是 JavaScript 条件语句的一部分,用于根据不同的条件执行不同的动作。 使用 switch 从多个语句块中选择一个执行。

switch 语句计算每个表达式。随后表达式的值会与结构中的每个 case 的值做比较。如果存在匹配,则与该 case 关联的代码块会被执行。

switch 语句通常与 break 或 default 关键字一起使用。两者都是可选的

break 关键字用于跳出switch代码块。会终止switch代码块的执行。 如果忽略该关键字,swith 语句的下一个代码块会被执行。

default 关键字 来规定匹配不存在时做的事情。 default 关键字在 switch 语句中只能出现一次。虽然是可选参数,但是建议都使用该参数,在不是我们期望的情况下,可以使用它输出信息。

1
2
3
4
5
6
7
8
9
10
switch(expression) {
case n:
代码块
break;
case n:
代码块
break;
default:
默认代码块
}

throw 语句

throw [no LineTerminator here] Expression ;

检测输入变量的值。如果值是错误的,会抛出一个异常(err)

异常 (err) 通过 catch 语句捕获并自定义输出错误信息

  • throw 语句抛出一个错误
  • 当错误发生时, JavaScript 会停止执行并抛出错误信息
  • 异常可以是 JavaScript 字符串、数字、逻辑值或对象
1
2
3
4
5
6
7
8
9
try { 
if(x == "") throw "is Empty";
if(isNaN(x)) throw "not a number";
if(x > 10) throw "too high";
if(x < 5) throw "too low";
}
catch(err) {
message.innerHTML = "Input " + err;
}

debugger

debugger 语句用于停止执行 JavaScript,并调用 (如果可用) 调试函数

使用 debugger 语句类似于在代码中设置断点

通常,你可以通过按下 F12 开启调试工具, 并在调试菜单中选择 “Console”

对象

全局对象

唯一的全局对象建立在控制进入任何执行环境之前

全局对象值属性
NaN

NaN 的值是 NaN

Infinity

Infinity 的值是 +∞

undefined

undefined 的值是 undefined

全局对象的函数属性
eval (x)

eval() 函数计算 JavaScript 字符串,并把它作为脚本代码来执行

如果参数是一个表达式,eval() 函数将执行表达式。如果参数是Javascript语句,eval()将执行 Javascript 语句。

parseInt (string , radix)
参数 描述
string 必需。要被解析的字符串。
radix 可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。
  • 如果 string 以 “0x” 开头,parseInt() 会把 string 的其余部分解析为十六进制的整数。
  • 如果 string 以 0 开头,那么 ECMAScript v3 允许 parseInt() 的一个实现把其后的字符解析为八进制或十六进制的数字。
  • 如果 string 以 1 ~ 9 的数字开头,parseInt() 将把它解析为十进制的整数。
parseFloat (string)

parseFloat() 函数可解析一个字符串,并返回一个浮点数。

该函数指定字符串中的首个字符是否是数字。如果是,则对字符串进行解析,直到到达数字的末端为止,然后以数字返回该数字,而不是作为字符串。

isNaN(value)

isNaN() 函数用于检查其参数是否是非数字值。

如果参数值为 NaN 或字符串、对象、undefined等非数字值则返回 true, 否则返回 false。

isFinite(value)

isFinite() 函数用于检查其参数是否是无穷大。

如果 number 是 NaN(非数字),或者是正、负无穷大的数,则返回 false。

Number(object)

Number() 函数把对象的值转换为数字。

如果对象的值无法转换为数字,那么 Number() 函数返回 NaN。

object 可选。一个 JavaScript 对象。如果没有提供参数,则返回0。

String(object)

String() 函数把对象的值转换为字符串。

Object对象

Math 对象

Math 对象属性
属性 描述
E 返回算术常量 e,即自然对数的底数(约等于2.718)
LN2 返回 2 的自然对数(约等于0.693)
LN10 返回 10 的自然对数(约等于2.302)
LOG2E 返回以 2 为底的 e 的对数(约等于 1.4426950408889634)
LOG10E 返回以 10 为底的 e 的对数(约等于0.434)
PI 返回圆周率(约等于3.14159)
SORT1 2 返回 2 的平方根的倒数(约等于 0.707)
SORT2 返回 2 的平方根(约等于 1.414)
Math 对象方法
方法 描述
abs(x) 返回
ceil(x) 对数进行上舍入
exp(x) 返回 E^x 的指数
floor(x) 对x进行下舍入
max(x,y,z,…n) 返回 x,y,z,…,n 中的最高值
min(x,y,z,…n) 返回 x,y,z,…,n中的最低值
pow(x,y) 返回 x 的 y 次幂
random() 返回0-1之间的随机数
round(x) 四舍五入

Array 对象

数组属性

属性 描述
constructor 返回创建数组对象的原型函数
length 设置或返回数组元素的个数
prototype 允许向数组对象添加属性或方法

Array 对象属性

方法 描述
concat() 连接两个或更多的数组,并返回结果。
every() 用于检测数组所有元素是否都符合指定条件(通过函数提供)如果有一个元素不满足,返回false,所有元素都满足,则返回true。
fill() 将一个固定值替换数组中所有的元素。
filter() 创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的元素。
find() 返回通过测试(函数内判断)的数组的第一个元素的值
forEach() 调用数组的每个元素,并将元素传递给回调函数
isArray() 判断一个对象是否为数组, Array.isArray(array)
map() 返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值
pop() 删除数组的最后一个元素并返回删除的元素
reverse() 反转数组的元素顺序
shift() 删除并返回数组的第一个元素
slice() 选取数组的的一部分,并返回一个新数组,不会改变原始数组
splice() 插入、删除或替换数组的元素,会改变原始数组
unshift() 向数组的开头添加一个或更多元素,并返回新的长度,将改变数组的数目

Date 对象

用于处理日期和时间

1
2
3
4
5
创建 Date 对象方法
$ var d = new Date();
$ var d = new Date(milliseconds);
$ var d = new Date(dateString);
$ var d = new Date(year, month, day, hours, minutes, seconds, milliseconds);
Date 对象方法
方法 描述
getDate() 从Date对象返回一个月的某一天(1-31)
getDay() 从Date对象返回一周中的某一天(0-6)
getFullYear() 以四位数返回年份
getHours() 返回小时(0-23)
getMilliseconds() 返回毫秒(0-999)
getMinutes() 返回分钟(0-59)
getMonth() 返回月份(0-11)
getTime() 返回从1970年1月1日至今的毫秒数
getSeconds() 返回秒数(0-59)
parse() 返回 1970/1/1 午夜距离指定日期时间的毫秒数
setDate() 用于设置一个月的某一天
valueOf 返回 Date 对象的原始值原始值返回1970年1月1日午夜以来的毫秒数!

Number 对象

Number 对象属性
属性 描述
constructor 返回对创建此对象的 Number 函数的引用
MAX_VALUE 可表示的最大数
MIN_VALUE 可表示的最小数
NAGATIVE_INFINITY 负无穷大,溢出时返回该数值
NaN 非数字值
POSITIVE_INFINITITY 正无穷大,溢出时返回该数值
prototype 允许向对象添加属性和方法
Number 对象方法
方法 描述
toExponential() 将对象的值转换为指数计数法
toFixed() 四舍五入为指定小数位数的数字
toPrecision() 对象的值超出指定位数时转换为指数计数法
toString() 转换为字符串
valueOf() 返回一个 Number 对象的基本数字值

RegExp 对象

正则表达式用于对字符串模式匹配及检索替换,是对字符串执行模式匹配的强大工具

1
2
3
4
语法:
var patt=new RegExp(pattern,modifiers);
或者
var patt=/pattern/modifiers;
  • pattern(模式) 描述了表达式的模式
  • modifiers(修饰符) 用于指定全局匹配、区分大小写的匹配和多行匹配
1
2
3
var re = new RegExp("\\w+");
等价
var re = /\w+/;
修饰符 描述
i 执行对大小写不敏感
g 执行全局匹配
m 执行多行匹配
方括号

用于查找某个范围内的字符

表达式 描述
[abc] 查找方括号之间
[^abc] 查找任何不在方括号之间的字符
[0-9] 查找任何从0至9的数字
[a-z] 查找任何从小写a到小写z的字符
[A-Z] 查找任何从大写A到大写Z的字符
(red\ blue\ green) 查找任何给定的选项
元字符

拥有特殊含义的字符

元字符 描述
. 查找单个字符,除了换行符和
\w 查找单词字符,单词字符包括:a-z、A-Z、0-9,以及下划线, 包含 _ (下划线) 字符
\W 查找非单词字符
\d 查找数字
\D 查找非数字字符
\s 查找空白字符
\S 查找非空白字符
\b 匹配单词边界
\B 匹配非单词边界
\0 查找null字符
\n 查找换行符
\f 查找换页符
\r 查找回车符
\t 查找制表符
量词
量词 描述
n+ 匹配任何包含至少一个n的字符串
n* 匹配任何包含零个或者多个n的字符串
n? 匹配任何包含零个或者一个n的字符串
n{X} 匹配包含 X 个 n 的序列的字符串
n{X,} X 是一个正整数。前面的模式 n 连续出现至少 X 次时匹配
n{X,Y} X 和 Y 为正整数。前面的模式 n 连续出现至少 X 次,至多 Y 次时匹配
n$ 匹配任何以n结尾的字符串
^n 匹配任何以n开头的字符串
?=n 匹配任何其后紧接指定字符串 n 的字符串
?!n 匹配任何其后没有紧接指定字符串 n 的字符串
对象方法
方法 描述
exec() 检索字符串中指定的值。返回找到的值,并确定其位置。var result=patt.exec(str);
test() 检索字符串中指定的值。返回 true 或 false。var result=patt.test(str);
toString() 返回正则表达式的字符串。
支持正则表达式的 String 对象的方法
方法 描述
search() 检索与正则表达式相匹配的值。如果没有找到任何匹配的子串,则返回 -1。var n=str.search(“Runoob”);
match() 找到一个或多个正则表达式的匹配。如果没有找到任何匹配的文本, match() 将返回 null。否则,它将返回一个数组,其中存放了与它找到的匹配文本有关的信息。string.match(regexp)
replace() 在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。string.replace(searchvalue,newvalue)
split() 用于把一个字符串分割成字符串数组。string.split(separator,limit)