ES6新特性

43 阅读2分钟

Javascript 运算符

  1. ?? 非空运算符

    b = (a ?? 3) 如果a不是undefined或者null 就返回该值,如果是就返回??后面的值

  2. ??= 空赋值运算符

var x = null
var y = 5
console.log(x ??= 5) // 5  只有x为空才会赋值
console.log(x) // 5
  1. ?.链判断运算符

  2. ?: 三元运算符

  3. ...扩展运算符


function fn(...arg){ 
    console.log(arg);//[1,2,3,4,5] 
    console.log(...arg);//1,2,3,4,5 
} 
fn(1,2,3,4,5)

1、代替apply
Math.max.apply(null,[1,3,5])
Math.math(...[1,3,5])

2、合并数组
var newArr = [...arr1, ...arr2]

3、解构赋值

var [a, ...b] = [2,3,4,5,6];
console.log(a, b); //2 [3,4,5,6] 
var [c, ...d] = [2]; 
console.log(c, d); //2 [] 
var [...x,y] = [2,3,4,5,6];

对象的扩展运算符
var {a, b, ...c} = {a : 12, b : 23, d : 34, c : 345} 
//c ->{d:34,c:345}

类数组转化为数组
var i = [... 'abcd']  // [a,b,c,d]

4、只有一个数组成员,严格等于undefined,默认值才会生效
let [x = 1] = [undefined]; x // 1 
let [x = 1] = [null]; x // null
  1. 字符串扩展方法

    .includes() 是否包含

    .startsWith() 是否以什么开始

    .endswith() 是否以什么结束

  2. Object.assign(target1, target2, targetN) 复制/合并对象

  3. Object.is(value1,value2) 比较两个值是否相等

  4. Set 是一种类似于数组的数据结构

    特性:元素唯一性,不允许重复的元素、使用add增加重复元素,会被忽略

    用途:元素去重,数据存储

const arr = [1,3,1,1,1] 
const set = new Set(arr); 
set.add(1).add(1);
console.log(set.size)//2 
const newArr = Array.from(set); 
console.log(newArr)//[ 1, 3 ]
  1. Map 类似Object,以key,value形式存储数据

区别:Map键不会隐式转换成字符串,而是保持原有的类型

  1. Marh.pow(2,10) 指数运算 2的10次方

  2. Object.values(obj) 将对象的值以数组的形式返回

  3. Object.entries(obj) 将对象以键值对二维数组返回,可以使用for...of...遍历

  4. padStart,padEnd 在字符串前,或者后面追加指定字符串

  • targetLength:填充后的目标长度
  • padString:填充的字符串
  • 填充的字符串超过目标长度,会在规定长度时被截断
  • 填充字符串太短会以空格填充
  • padString未传值,以空格填充