Skip to content

ES6 系列

1.let 和 const 的區別

let 和 const 都是塊級作用域且在當前作用域有效不能重複聲明

1.1 let 命令

  • 不存在变量提升
  • 不允许重复声明
{
    let a = 1;
    let b = 2;
}

1.2const 命令

const 只能声明一个只读的常量,声明一个变量后无法修改,且不能再用 let 声明

const PI = 3.14;

2.变量的解构赋值

2.1 数组

//以前
let a = 1;
let b = 2;
//es6
let [a,b] = [1,2];


let [a,b,...c] = [1]
console.log(a,b,c) //1 undefined [] 如果结构不成功就是undefined

//如果两边模式不相等会报错
let [a] = 1;
let [a] = false;
let [a] = NaN;
let [a] = {}
//使用默认值
let [a=1] = [] //a=1
let [a=1] = [undefined] a =1 默认值不起作用
let [a = 1] = [null] a = null

2.2 对象

与数组的解构不同,对象解构不需要严格按照顺序取值,而按照变量名去取对应的属性名若娶不到则为 undefined.

let {a,b} = {a: 1,b: 2} // a = 1 b =2
let {a} = {b: 1,c: 2} //a undefined

//指定解构默认值
let { a = 1} = {}
let {a,b=1} = {a: 2}

2.3 字符串的解构

const [a,b,c,d,e] = 'hello';

2.4 数值和布尔值的解构赋值

解构赋值的规则市,只要等号右边的值不是对象或数组,就先将其转化为对象。由于 undefiend 和 null 无法转化为对象,对他们解构会报错。

let {toString: s} = 123
s ===Number.prototype.toString

2.5 函数参数的解构赋值

function fn([a,b]) {

}
fn([1,2])


function fn({a=0,b=1}) {
    return a+b;
}
fn({a: 3,b: 4})

2.6 应用

//交换
let a= 1,b =2;
[a,b] = [b,a]

//函数
function fn() {
    return {a: 1,b: 2}
}
let {a,b} = fn()
//json
let json = {name: 'jack',age: 20}
let {name,age} = json;
//遍历map结构
const m = new Map();
m.set('a',1)
m.set('b',2)
for(let [k,v] of m) {
    console.log(k+'-'+v)
}
//获取模块
const {log,sin,cos} = require('math');

3.字符串拓展

3.1 includes(),startsWith(),endsWith()

在判断字符串是否包含另一个字符串时 Es6 之前用 typeof Es6 后又多了三种方法

  • includes() 返回布尔值 是否找到
  • startsWith() 返回布尔值 是否在头部
  • endsWith() 返回布尔值 是否在尾部
let a = 'hello jack'
a.includes('jack') //true
a.startsWith('jack')  //false
a.startsWith('hello')//true
a.endsWith('jack')//true

3.2repeat()

返回某个字符串 n 次

let a = 'ab'
a.repeat(3) //ababab

3.3padStart(),padEnd()

用于将字符串头部或尾部补全长度, padStart()为头部补全, padEnd()为尾部补全。 这两个方法接收 2 个参数,第一个指定字符串最小长度,第二个用于补全的字符串。

//基础用法
let a = 'x';
a.padStart(5,'ab') //'ababx'
a.padEnd(5,'ab') //'xabab'
let a  = 'abxxxab'
a.padStart(5,'dd') // 'abxdd' //截取多余的在补上

a.padStart(4) //'    a' 如不不指定就用空格代替

3.4 字符串拼接

let x = 'dddd'
let a = `a b c d ${x}`

4.正则拓展

  • 参数是字符串 new RegExp('abc','i') 或 let a = /abc/i
  • 参数是正则表达式 new RegExp(/abc/i)
let a = new RegExp('abc','i')
//等价于
let a = /abc/i

4.1 字符串的正则方法

match()、replace()、search()、split()