学些ES6:Destructuring

Destructuring:

数组:

let [firstValue] = [1]; // firstValue: 1

let c, d;
let [a, b] = [c, d] = [1, 2];

var [head, ...tail] = [1, 2, 3, 4]; // tail: [2,3,4]

可以交换变量:

let [x, y] = [‘ax‘, ‘why‘];
[x, y] = [y, x]; // x: why, y:ax

const all = [‘ax‘, ‘why‘, ‘zet‘];
const [,,z] = all; // z: set

嵌套数组也可以:

const user = [[‘Some‘, ‘One‘], 23];
const [[firstName, surname], age] = user;

for (var [a, b] of [[1, 2]]) {} // a:1, b:2

字符串也可以哦:

let [a, b, c] = ‘abc‘; // [a, b, c]: [‘a‘, ‘b‘, ‘c‘]

object:

const {t: x} = {t: 1, b:2}; // x:1

const {x} = {x: 1, b:2}; // x:1

const m = {first: 23, second: 42};
const {magic: {second: second}} = {magic: m}; // second: 42

const {z:[,x]} = {z: [23, 42]}; // x:42

const [,[{lang: lang}]] = [null, [{env: ‘browser‘, lang: ‘ES6‘}]]; // lang: es6

包括prototype:

const {substr} = "1"; // substr: String.prototype.subst

默认值:

const [,b=2] = [1,,3]; // b:2

const {a, b=2} = {a: 1, b: undefined}; // b:2

const {a, b=2} = {a: 1};

const {x: y=42} = {y: 23}; // y: 42

参数处理:

const fn = ({id, name}) => {
// ...
};

const user = {name: ‘Wolfram‘, id: 42};
fn(user); // id: 42, name: Wolfram

const fn = ([,{name}]) => {
// ...
};
const users = [{name: ‘nobody‘}, {name: ‘Alice‘, id: 42}];
fn(users); // name: alice

同样可以使用默认值:

const fn = (id, name=‘Bob‘, c) => {
// ...
};
fn(23, undefined, 3); // id:23, name: Bob, c:3

const fn = (id, name=‘Bobby‘) => {
// ...
};
fn(23, ‘Bob‘); // id:23, name: Bob

const defaultUser = {id: 23, name: ‘Joe‘};
const fn = ([user=defaultUser]) => {
// ...
};
fn([]); // user: defaultUser

const fn = (id=1, [arr], {obj=2}) => {
// ...
};
fn(void 0, [2], {obj:3}); // id: 1, arr: 2, obj: 3

时间: 2024-08-25 21:10:54

学些ES6:Destructuring的相关文章

学些ES6:反射

Reflect: 基础: let Class = class {}; Reflect.construct(Class) instanceof Class // true let obj = {x: 23}; Reflect.get(obj, 'x') // 23 Reflect.has(obj, 'x') // true apply: 执行函数: let fn = () => {return 42;}; Reflect.apply(fn) // 42 指定context: class Fourt

学些ES6:generator

Generator: 创建: function* g() {} // g: [object Generator] let g = function*() {}; let obj = {*g() {}}; const generatorName = 'g';let obj = {*[generatorName]() {}}; const generatorName = 'g';class Klazz {*[generatorName]() {}} iterator: const generator

学些ES6:类

类(class): class关键词: let TestClass = class {};const instance = new TestClass(); {class Inside {}} typeof Inside // undefined: block scoped 方法与constructor: class User {constructor(id) {this.id = id;} sayHello(){return 'hello'+this.id;}}const user = new

学些ES6:Map

Map: 初始化: const mapSize = (new Map()).size; // mapSize: 0 const pair1 = [1, 'one']; const pair2 = [2, 'two']; const map = new Map([pair1, pair2]); // new Map().set(...pair1).set(...pair2); // 以最后设的值为准: const pair1 = [1, 'one']; const pair2 = [1, 'uno

运维工程师该干什么学些什么?[致菜鸟]

很多刚学linux运维的朋友,总是搞不懂,运维工程师工作中干些啥?学的这些东西有什么用?今日我特来总结总结,希望能帮助即将跨入该行的人形成一个整体的思路.下面红色字体代表所要掌握的LInux免费开源工具. 运维工程师干些什么 总结两句话 1.  保障业务长期稳定运行(如网站服务器.游戏服务器等等). 2.  保障数据安全可靠(如用户名密码.游戏数据.博客文章.交易数据等等). 由这两句话推演运维工程师要学些什么 一.保障业务长期稳定运行 出一点点差错,用户就要投诉了. 1.业务跑在什么上面? 网

「01」机器学习,到底在学些什么?

阅读 0 编辑文章 大家好,欢迎来到久违的机器学习系列,这是「美团」算法工程师带你入门机器学习 专栏的第一篇文章,不会太长,一半聊想法,一半聊干货.熟悉我的朋友可能知道,我以前的文章比较随意,涉及的内容极广,包括但不限于Python/Java/C/C++,网络编程,Hadoop等,但主要核心还是机器学习算法和数据科学相关的主题,这一点没变过. 最近认真总结和思考了之前的博客内容,决定将自己从入门到现在一路走来的学习经验和理解整理一番,帮助更多后来的小伙伴更好的入门,所以就有了这个系列.以前的知乎

测试应该都学些什么!

记得从上学那会.初中的时候老师还是会让大家做些笔记.初中毕业后.高中甚至大学就一直很少在写个人笔记了.至少我是哈.主动承认自己的不足. 为什么要说笔记呢.原因很简单.就是最近工作出现的一连串繁琐事情.当然不排除我个人认为笔记有时候很好的描述一个人的成长历练.经历等等. 话题跑偏了好像.先说一下笔记的好处: 1.做笔记是训练一个人的语言转化能力 2.做笔记可以提高一个人选择.归纳有效信息的能力. 文章的主题是测试应该学习些神马?我本人也是做测试的.从毕业截止到今.不多不少2年半. 刚开始的时候做这

2019,全栈开发者应该学些什么

前端 HTML.CSS 和 JavaScript 是必须掌握的,你还需要学习 React.Vue 或 Angular 等前端框架或库.但是,你应该选择哪一个?对于一个真正的全栈开发者,你可以在 2019 年选择这三个框架中的任何一个. 来自 React 16 的更新 你需要了解 React 的基础知识及其基于单向数据流架构的组件.今年我们看到了 React 16 的大量更新和 2019 年即将发布的一些小版本更新. 新的生命周期方法: React 16.6 中的 Suspense for Cod

十余年谷歌大佬的见解:成为算法工程师到底需要学些什么?

人工智能? 感觉这个词很广泛,我之前想把人工智能当成某一项技术来学,但是并没有找到我满意的答案,还是说人工智能本就不是某一项技术? 首先回答一下人工智能到底学什么 1.学习并掌握一些数学知识 高等数学是基础中的基础,一切理工科都需要这个打底,数据挖掘.人工智能.模式识别此类跟数据打交道的又尤其需要多元微积分运算基础线性代数很重要,一般来说线性模型是你最先要考虑的模型,加上很可能要处理多维数据,你需要用线性代数来简洁清晰的描述问题,为分析求解奠定基础 概率论.数理统计.随机过程更是少不了,涉及数据