ES5
ES5
ES5
发行于2009年,按照ECMAScript
命名风格,ES5
也被称作ECMAScript 2009
, 是JavaScript
历史上第一个主要的版本。
严格模式
使用use strict
定义代码应该在严格模式下执行,协助写出更加清晰的代码,一定程度上约定代码规范,例如: 禁止使用未声明的变量
use strict
只是一个字符串表达式。旧的浏览器如果不理解的话不会抛出错误。
'use strict'
// 抛错,变量未定义
PI = 3.14
// 正常使用
const name = '142vip'
console.log(name)
字符串
charAt方法
使用charAt()方法返回字符串中字符所有的角标位置(Index)值,例如:
const str = 'HELLO'
// 返回 E
str.charAt(1)
多行显示
使用反斜杠\
转义,允许多行字符串,例如:
// 转义字符可能支持的不是很好
// const msg = 'Hello \
// Dolly!'
// 更安全的做法
const newMsg = 'Hello ' + 'Dolly!'
trim方法
使用trim()方法可以删除字符串两侧的空格,例如:
const name = ' 142vip.cn '
// 返回 142vip.cn
console.log(name.trim())
数组
isArray方法
在Array
对象中使用isArray()
方法,可以检查对象是否为数组,例如:
const arr = [1, 2, 3]
// 返回 true
Array.isArray(arr)
forEach方法
forEach()
方法为每个数组元素调用一次回调函数,可以用来处理数组,例如:
const arr = [1, 2, 3]
const result: number[] = []
arr.forEach((a) => {
result.push(a * a)
})
// 返回 [1,4,9]
console.log(result)
map方法
filter
reduce
reduceRight()
every()
判断数组中的元素是否全部满足特定函数的情况,返回true
| false
,全部满足才会返回true
,例如:
export const nums = [12, 14, 33, 25, 28]
// 判断数组中的值是否全部超过15的
const over15 = nums.every((num) => {
return num > 15
})
// 输出 false
console.log(over15)
some()
判断数组中的元素是否存在满足特定函数的情况,返回true
| false
,部分满足即返回true
,例如:
const nums = [12, 14, 33, 25, 28]
// 判断数组中的值是否存在超过15的
const over15 = nums.some((num) => {
return num > 15
})
// 输出 true
console.log(over15)
indexOf()
定义:
indexOf(searchElement: T, fromIndex?: number): number
indexOf()
方法支持从数组开头开始查找所有,找到第一个符合条件值的索引(角标),例如:
const stu = ['142vip', 'Lisa', '142vip']
// 输出 0,数组中角标为0对应的就是142vip
console.log(stu.indexOf('142vip'))
// 支持指定起始索引
console.log(stu.indexOf('142vip', 1))
lastIndexOf()
定义:
lastIndexOf(searchElement: T, fromIndex?: number): number
lastIndexOf()
方法支持从数组结尾开始查找所有,找到第一个符合条件值的索引(角标),例如:
const stu: string[] = ['Tom', 'Lisa', '142vip']
// 输出 2,数组中角标为2对应的就是142vip
console.log(stu.lastIndexOf('142vip'))
// 支持指定起始索引
console.log(stu.lastIndexOf('142vip', 2))
序列化
JSON.parse()
反序列化方法,支持将JSON字符串还原为对象,例如:
const student = JSON.parse('{"name":"142vip","age":18}')
console.log(student)
JSON.stringify()
序列化方法,支持将对象转化为JSON字符串,例如:
const student = {
name: '142vip',
age: 18
}
// 序列化为字符串
console.log(JSON.stringify(student))
日期
now()
Date.now()
返回自零日期(1970 年 1 月 1 日 00:00:00 UTC)以来的毫秒数,例如:
// 输出:1702525268142
console.log(Date.now())
toISOString()
toISOString()
方法使用 ISO
标准格式将 Date
对象转换为字符串,例如:
const today = new Date()
// 输出:2023-12-14T03:31:56.160Z
console.log(today.toISOString())
toJSON()
toJSON()
将 Date
对象转换为字符串,格式为 JSON
日期。JSON
日期的格式与 ISO-8601
标准相同:YYYY-MM-DDTHH:mm:ss.sssZ
,例如:
const today = new Date()
// 输出: 2023-12-14T03:27:50.441Z
console.log(today.toJSON())
获取器和设置器
对象方法
新增了一些对象方法,
Object.create(parent, donor)
// Adding or changing an object property
Object.defineProperty(object, property, descriptor)
// Adding or changing object properties
Object.defineProperties(object, descriptors)
// Accessing Properties
Object.getOwnPropertyDescriptor(object, property)
// Returns all properties as an array
Object.getOwnPropertyNames(object)
// Accessing the prototype
Object.getPrototypeOf(object)
// Returns enumerable properties as an array
Object.keys(object)
函数绑定
尾随逗号
ES5
允许在定义对象和数组中使用尾随逗号
,对于JSON
数据格式是支持尾随逗号
,例如:
对象和数组的数据中,最后的一个元素末尾可以跟随逗号。
const person = {
name: 'Tom',
age: 18,
}
const arr = [1, 2, 3,]
JSON
数据格式末尾不支持尾随逗号。
// 支持
const badStu = '{"name":"Tom", , "age":18}'
JSON.parse(person)
// 不支持
const goodStu = '{"name":"Tom", , "age":18,}'
JSON.parse(person)