概述
ES6是JavaScript语言的下一代标准,最早发布于2015年6月(ES2015),这里的ES6是一个历史名词,泛指ES2015、ES2016、ES2017...
let和const
let与const共同点:
- 用法与var 类似都是用来声明变量。
- 有块级作用域,只在所在的代码块有效。
- 不存在变量提升。
- 暂时性死区(在let和const声明语句前调用会报错)。
- 不允许重复声明。
- 允许在块级作用域声明函数。(ES5版本只能在全局和函数作用域才能声明函数)。
let与const的不同点
- let是变量,声明后可以修改值,const是常量,声明后不可修改值(基本类型),并且声明时必须被初始化。
解构赋值
解构赋值就是从数组或对象中提取值,并对变量进行赋值操作。
实例:
let [a, b, c] = [1, 2, 3] // 数组解构赋值
let [a, b, ...c] = [1, 2, 3, 4, 5] // 将多个值赋给c变量
let [a, b = 10, c] = [1, 2, 3] // 给b变量添加默认值
let {name, age} = {name: 'xiaoming', age: 20} // 对象解构赋值
let {name} = {name: 'xiaoming', age: 20} // 只取其中一个
let {name, age: {num}} = {name: 'xiaoming', age: {num: 20, title: 'age'}} // 嵌套数据的解构赋值
let [a, b, c, d] = 'abcd' // 字符串的解构赋值
let {length: len} = 'abcde' // 字符串有个默认的length属性也可以被解构
let {toString: str} = true // 布尔值有toString方法可以被解构
let {toString: str} = 123 // 数值有toString方法可以被解构
function fn([a, b, c]){
console.log(a, b, c)
}
fn([1,2,3]) // 函数的形参可以被解构
字符串的拓展
字符的Unicode 表示法:支持了超过uFFFF范围的码点(2个字节)
"u0061"
"uD842uDFB7"
字符串的遍历器接口:for ... of
for (let item of "hello") {
console.log(item)
}
模版字符串:
let str = 124
let str2 = `num=${str}` // 模版字符串中可以使用 ${}方式添加变量
标签模版:
function fn (x) {
console.log(x)
}
let str = 'word'
fn `hello` // 打印 [ 'hello' ]
fn `
hello
${str}
` // 换行、添加变量
// 用标签模版可以给函数传参数,传递的参数会被转换成数组类型
字符串的新增方法
- String.fromCodePoint() 从 Unicode 码点返回对应字符,识别码点大于
0xFFFF
的字符。 - String.raw() 模版字符串中的 斜杠会被转移成字符 斜杠,会将所有变量替换。方便进一步对数据的处理。
- codePointAt() 返回一个字符的码点,能够正确处理 4 个字节储存的字符。
- normaliz() 字母与语调重音符号合并。比如
O
(u004F)和ˇ
(u030C)合成Ǒ
(u004Fu030C) - includes() 查找字符串参数并返回布尔值。
- startWith() 查找字符串头部参数返回布尔值。
- endWith() 查找字符串尾部参数返回布尔值。
- repeat(n) 重复n次字符串并返回新字符串。
- padStart(lenth, str) 设置指定长度length,长度不够在头部用str字符填充。
- padEnd(length, str) 置指定长度length,长度不够在尾部用str字符填充。
- trimStart() 消除字符串头部的空格。
- trimEnd() 消除字符串尾部的空格。
- matchAll() 返回正则的所有匹配项。