(...)es6运算符的用法笔记

前言:

...是es6出的新规范,这个东西不是像其他的方法一样,用法只用一种;
但是可以把这个运算符的操作归为一类:解构!

1、比如做数组的赋值

    let a = [1, 2, 3, 4];
    let b = a;
    b.push(5);
    console.log(a);     // [1, 2, 3, 4, 5]
    console.log(b);     // [1, 2, 3, 4, 5]
    // 这里因为数组对象存储的引用地址,这里改变b的引用位置的值;
    // 因为a的引用地址和b是相同的,所以a输出的值也是被改变过的;
    
    // 我们使用扩展运算符做深拷贝
    let a = [1, 2, 3, 4];
    let b = [...a];
    b.push(5);
    console.log(a);     // [1, 2, 3, 4]
    console.log(b);     // [1, 2, 3, 4, 5]
    // 这里为什么a的输出没有新添加的5呢???
    // 首先我们看a,a = [],代表在内存空间中给a创建了一个数组对象,并且数组中存储着这几个值,
    // 而b呢??我们也看到了b = [],这句话告诉我们b也新建了一个对象,b对象中存储什么了呢???
    // 我们看到b对象中有一个...a,我说过这是解构,他的结果就是1, 2, 3, 4,我们把这些值放到b的对象中;
    // 所以b的对象中就有这些值了,这是是一个新对象,和a没有任何关联。这就实现了深拷贝。
    
    // 对象的解释也是一样的哦,这里我们给出代码
    let a = {a: 1, b: 3};
    let b = {...a};
    b.c = 3;
    console.log(a);     // {a: 1, b: 3}
    console.log(b);     // {a: 1, b: 3, c: 3}

2、 合并数组

(1)在es6之前,我们只能通过concat()方法进行合并数组,代码比较冗余;如下:

    let arr1 = ['a', 'b'];
    let arr2 = ['c'];
    let arr3 = ['d', 'e'];
    arr1.concat(arr2, arr3);
    console.log(arr1);  // [ 'a', 'b', 'c', 'd', 'e' ]

(2)合并数组es6的实现方法:

    let arr1 = ['a', 'b'];
    let arr2 = ['c'];
    let arr3 = ['d', 'e'];
    let arr = [...arr1, ...arr2, ...arr3]
    console.log(arr);   // [ 'a', 'b', 'c', 'd', 'e' ]

解说:首先我们看到有三个要合并的数组,然后let arr = [],首先创建了一个数组对象数组对象里面存储的什么呢???
存储的是...arr1, ...arr2, ...arr3,我们一步一步的进行解构
// ...arr1, ...arr2, ...arr3
// 'a', 'b', ...arr2, ...arr3
// 'a', 'b', 'c', ...arr3
// 'a', 'b', 'c', 'd', 'e'
我们把解构结果放到arr中,最终arr的值为['a', 'b', 'c', 'd', 'e']
(3)对象是一样的哦,我们看一下代码:

    let obj1 = {a: 1, b: 2};
    let obj2 = {c: 3, d: 4, a: 10};
    let obj = {...obj1, ...obj2};   // {a: 10, b: 2, c: 3, d: 4}
    // 这里如果两个对象中有相同的值,则后面覆盖前面,如这个,后面的a: 10,则覆盖前面的a: 1,所以最终a为10

3、方法赋值

(1)这里我们使用一个方法Math.max(),这个方法可以传入任意多个参数,他会把最大的数字返回给你,例如:

    let max = Math.max(1, 34, 89, 100, 33);
    console.log(max);       // 100
    let arr = [12, 56, 100, 392, 55, 12, 34];
    let max = Math.max(...arr);
    console.log(max);       // 392

    // 这里我们使用解构的思路来看一下传入的值是什么
    // ...arr
    // 12, 56, 100, 392, 55, 12, 34
    
    // 上面的写法等同于如下
    let max = Math.max(12, 56, 100, 392, 55, 12, 34);
    // 所以他就能取到最大值了

4、与解构取值一起使用

    let arr = [1, 2, 3, 4, 5, 6, 7]
    let [a, ...list] = arr;
    console.log(a);     // 1
    console.log(list);  // [2, 3, 4, 5, 6, 7]
    
    
    let obj = {a: 10, b: 2, c: 3, d: 4};
    let { a } = obj;
    console.log(a);     // 10

    let obj = {b: 2, c: 3, a: 10, d: 4};
    let { a } = obj;
    console.log(a);     // 10

    let obj = {a: 10, b: 2, c: 3, d: 4};
    let { a, ...obj1 } = obj;
    console.log(obj1);  // {b: 2, c: 3, d: 4}

    let obj = {b: 10, c: 2, a: 3, d: 4};
    let { a, ...obj1 } = obj;
    console.log(obj1);  // {b: 10, c: 2, d: 4}
    // 对象没有顺序,但是有键值,只要键值符合,就能取出来,而数组有序,是根据顺序取值的
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335