总结一下强大的ES6符号

总结一下强大的ES6符号

空值合并运算符 '??'

第一个参数不是 null/undefined,则 ?? 返回第一个参数。否则,返回第二个参数。

result = a ?? b,可以理解为这样:

result = (a !== null && a !== undefined) ? a : b;

可选链 "?."

可选链 ?. 是一种访问嵌套对象属性的安全的方式。即使中间的属性不存在,也不会出现错误。

let user = {}; // 一个没有 "name" 属性的 user 对象

alert(user.name); // Error!
alert( user?.name ); // undefined(不报错)

可选链 ?. 不是一个运算符,而是一个特殊的语法结构(犀牛书:操作符)。它还可以与函数和方括号一起使用。

扩展、剩余操作符(Rest参数与Spread操作符)

Rest操作符

  • …rest必须是最后一个参数哦

用法一:用于函数

function sumAll(...args) { // 数组名为 args
  let sum = 0;

  for (let arg of args) sum += arg;

  return sum;
}

alert( sumAll(1) ); // 1
alert( sumAll(1, 2) ); // 3
alert( sumAll(1, 2, 3) ); // 6

Rest 参数可以通过使用三个点 ... 并在后面跟着包含剩余参数的数组名称,来将它们包含在函数定义中。这些点的字面意思是“将剩余参数收集到一个数组中”。

用法二:数组和对象的解构

var [a, ...restArr] = [1,2,3,4]
var {name: n, ...restObj} = {name: 'zyp',  age: 18, like: 'sleep'}
console.log(restArr) //[2,3,4]
console.log(restObj)//{age: 18, like: 'sleep'}

扩展操作符

用法一:将数组扩展成函数参数

function foo(a,b, c) {
	console.log(a);//1
	console.log(b);//2
	console.log(c)//3
}
var arr = [1,2,3]
foo(...arr)

用法二:数组合并

var arr1 = [1,2,3], arr2 = [4,5,6];
arr1.push(...arr2) // arr1为[1, 2, 3, 4, 5, 6]


var arr1 = [1,2,3], arr2 = [4,5,6];
arr1.push(...arr2) // arr1为[1, 2, 3, 4, 5, 6]

用法三:字符串转数组

var str = 'zyp';
var strArr = [...str] //strArr为["z", "y", "p"]

用法四:将类数组对象转化成数组(arguments)

function foo() {
	var argArr = [...arguments]
	console.log(argArr) //[1,2,3,4]
	console.log(argArr instanceof Array) //true
}
foo(1,2,3,4)

arguments 是一个类数组,也是可迭代对象,但它终究不是数组。它不支持数组方法,因此我们不能调用 arguments.map(...) 等方法。

箭头函数是没有 "arguments"(箭头函数没有上下文,意味的也没有this)

如果我们在箭头函数中访问 arguments,访问到的 arguments 并不属于箭头函数,而是属于箭头函数外部的“普通”函数。

上一篇:【005期】了解什么是 redis 的雪崩、穿透和击穿?redis 崩溃之后会怎么样?应对措施是什么?...


下一篇:Redis持久化深入理解