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
将参数转化为整数值
- 对输入参数调用
ToNumber
- 如果 Result(1) 是 NaN,返回 +0
- 如果 Result(1) 是 +0 ,-0,+∞,或 -∞,返回 Result(1)
- 计算 sign(Result(1)) * floor(abs(Result(1)))
- 返回 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 | do Statement while ( Expression ) |
while语句
while 循环会在指定条件为真时循环执行代码块。
1 | while ( Expression ) Statement |
for 语句
1 | for ( ExpressionNoInopt ; Expressionopt ; Expressionopt) Statement |
for-in 语句
1 | for ( LeftHandSideExpression in Expression ) Statement |
总结:for/in 语句用于循环对象属性。循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作。
- for - 循环代码块一定的次数
- for/in - 循环遍历对象的属性
- while - 当指定的条件为 true 时循环指定的代码块
- do/while - 同样当指定的条件为 true 时循环指定的代码块
注意:不要使用 for/in 语句来循环数组的索引,你可以使用 for 语句替代。
continue 语句
continue 语句中断循环中的迭代,如果出现了指定的条件,然后继续循环中的下一个迭代。 该例子跳过了值 3
1 | continue; |
break 语句
break 语句可用于跳出循环
1 | for (i=0;i<10;i++) |
总结:break 语句可用于跳出循环。
continue 语句跳出循环后,会继续执行该循环之后的代码(如果有的话)
return 语句
return 语句会终止函数的执行并返回函数的值
1 | return ; |
with 语句
1 | with ( Expression ) Statement |
switch 语句
switch 语句用于基于不同的条件来执行不同的动作。
switch 语句是 JavaScript 条件语句的一部分,用于根据不同的条件执行不同的动作。 使用 switch 从多个语句块中选择一个执行。
switch 语句计算每个表达式。随后表达式的值会与结构中的每个 case 的值做比较。如果存在匹配,则与该 case 关联的代码块会被执行。
switch 语句通常与 break 或 default 关键字一起使用。两者都是可选的
break 关键字用于跳出switch代码块。会终止switch代码块的执行。 如果忽略该关键字,swith 语句的下一个代码块会被执行。
default 关键字 来规定匹配不存在时做的事情。 default 关键字在 switch 语句中只能出现一次。虽然是可选参数,但是建议都使用该参数,在不是我们期望的情况下,可以使用它输出信息。
1 | switch(expression) { |
throw 语句
throw [no LineTerminator here] Expression ;
检测输入变量的值。如果值是错误的,会抛出一个异常(err)
异常 (err) 通过 catch 语句捕获并自定义输出错误信息
- throw 语句抛出一个错误
- 当错误发生时, JavaScript 会停止执行并抛出错误信息
- 异常可以是 JavaScript 字符串、数字、逻辑值或对象
1 | try { |
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 | 创建 Date 对象方法 |
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 | 语法: |
- pattern(模式) 描述了表达式的模式
- modifiers(修饰符) 用于指定全局匹配、区分大小写的匹配和多行匹配
1 | var re = new RegExp("\\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) |