赋值

一、展开语法

1、数组浅拷贝

const arr = [...'ABCDE'];
console.log(arr); // ["A", "B", "C", "D", "E"]const arr1 = [1, 2];
const arr2 = ['a', ...arr1];
const arr3 = [...arr1, ...arr2];
console.log(arr2);  // ['a', 1, 2]
console.log(arr3);  // [1, 2, 'a', 1, 2]

2、对象浅拷贝

const obj1 = {a: 1, b: 2};
const obj2 = {...obj1, c: 30};
console.log(obj2);         // {a:1, b:2, c:30}
const obj3 = {b: 20, c: 30};
const obj4 = {...obj2, ...obj3};  // 合并对象
console.log(obj4);         // {a:1, b:20, c:30}

3、函数调用时传参

function sum(x, y, z) {return x + y + z;
}
const data = [1,2,3];
console.log(sum(...data)); // 6

二、剩余语法

1、函数参数

function fn(name, ...args) {console.log(name);  // 基础参数console.log(args);  // 剩下的参数组成的数组
}
fn('ES6');
//  'ES6'
//  []
fn('abcd', 7, 'ES6');
//  "abcd"
//  [7, "ES6"]

解构

一、数组解构

var [a, b] = [10, 20];
console.log(a);   // 10
console.log(b);   // 20//默认值(对未能取的值的变量赋一个默认值)
let [a=3, b=9] = [1];             // a=3 b=9
let [a, b = 1] = [10, ''];        // a=10, b=''
let [a, b = 1] = [10, undefined]; // a=10, b=1
/*在 ES6 中,判断一个数组中是否有值,使用严格相等运算符(===)来进行断,*只有当一个数组成员严格等于 undefined,默认值才会生效。所以第三个 b *使用了默认值。*/let [a = 1] = [null];             // a=null//null==undefined 返回的是 true,null===undefined 返回的是 false。所以数组成员是 null,默认值就不会生效。//交换变量
var a = 1;
var b = 4;
[a, b] = [b, a] // a=4, b=1//选择性获取值
var [a, , , b] = [10, 20, 30, 40];
console.log(a);   // 10
console.log(b);   // 40//剩余参数
var [a, b, ...rest] = [10, 20, 30, 40, 50];
console.log(a);     // 10
console.log(b);     // 20
console.log(rest);  // [30, 40, 50]

二、对象解构

var obj = { name: 'abcd', age: 7 };
var { name, age } = obj;  // name: abcd, age: 7var {a = 10, b = 5} = {a: 3};                 // a = 3, b = 5
var {a = 10, b = 5} = {a: 3, b: undefined};   // a = 3, b = 5
var {a = 10, b = 5} = {a: 3, b: null};        // a = 3, b = nullvar {a, c, ...rest} = {a: 1, b: 2, c: 3, d: 4}
console.log(a);     // 1
console.log(c);     // 3
console.log(rest);  // { b: 2, d: 4 }

三、字符串解构

const [a, b, c, d, e] = 'ABCDE';
console.log(a);   // "A"
console.log(b);   // "B"
console.log(c);   // "C"
console.log(d);   // "D"
console.log(e);   // "E"let {length : len} = 'hello';
console.log(len); // 5

欢迎访问我的个人博客

ES6学习笔记二(解构赋值、语法糖)相关推荐

  1. ES6学习(变量解构赋值)

    解构赋值含义:允许按照一定模式,从数组和对象中提取值,对变量进行赋值,只要等号两边的模式相同,左边的变量就会被赋予对应的值 1.数组解构赋值 右侧必须是一个数组 let [a, b, c] = [1, ...

  2. ES6学习笔记二arrow functions 箭头函数、template string、destructuring

    接着上一篇的说. arrow functions 箭头函数 => 更便捷的函数声明 document.getElementById("click_1").onclick = ...

  3. 【ES6】变量的解构赋值

    [ES6]变量的解构赋值 一.什么叫解构赋值? 二.解构赋值有哪些分类?写法? 1)对数组的解构赋值 2)对对象的解构赋值 3)对字符串的解构赋值 4)对数值和布尔值的解构赋值 5)对函数参数的解构赋 ...

  4. 石川es6课程---6、解构赋值

    石川es6课程---6.解构赋值 一.总结 一句话总结: 结构相同一一对应的方式赋值:let [json, arr, num, str] = [{ a: 1, b: 2 }, [1, 2, 3], 8 ...

  5. ES6中的对象解构赋值

    解构赋值: 解构赋值语法是一个Javascript表达式,这使得可以将数据从数组或对象提取到不同的变量中(这段话是mdn中关于解构赋值的定义,注意这里的定义,可以看出解构主要用在数组和对象上). 说白 ...

  6. Vue2.x—理解vuex核心概念action(使用到ES6的变量的解构赋值)

    Action Action 类似于 mutation,不同在于: Action 提交的是 mutation,而不是直接变更状态. Action 可以包含任意异步操作. 让我们来注册一个简单的 acti ...

  7. ES6学习笔记二 新的声明方式和变量的解构赋值!

    新的声明方式 在ES5的时候,我们只有一个声明方式,var!但是在es6中,声明进行了扩展,我们加上ES5的var的申明方式,我们有了三种声明方式: var:它是variable的简写,可以理解成变量 ...

  8. 第五节:一个令人兴奋的ES6新特性:解构赋值

    端午节刚刚过,大家是回家陪家人吃粽子,还是约好朋友一起出去浪了?昨天上了一天班,不知道大家有没有把出去玩耍的心思收回来,准备接下来的学习. 继续学习吧骚年们...... 学完了前4节,今天我给大家带来 ...

  9. vue解构赋值_前端开发es6知识 模块化、解构赋值、字符串模板

    项目开发中一些常用的es6知识,主要是为以后分享小程序开发.node+koa项目开发以及vueSSR(vue服务端渲染)做个前置铺垫. 项目开发常用es6介绍1.块级作用域 let const 2.箭 ...

  10. let的解构赋值_前端开发es6知识 模块化、解构赋值、字符串模板

    项目开发中一些常用的es6知识,主要是为以后分享小程序开发.node+koa项目开发以及vueSSR(vue服务端渲染)做个前置铺垫. 项目开发常用es6介绍 1.块级作用域 let const 2. ...

最新文章

  1. windows 下xampp集成环境安装mongodb扩展
  2. MATLAB 与Modelsim之间通过Linker的联合仿真
  3. 倡导农民丰收节交易会-农业大健康·万祥军:谋定功能性农业
  4. 【Android】自定义环形菜单View
  5. git push 的符号笔有什么用_如何同步多个 git 远程仓库
  6. 微信小程序 客服功能 客服消息
  7. 你的第一个 iOS 应用 – 2.开始上手
  8. c语言stl大全,C++ STL库应用汇总
  9. 用JMS578转接板开卡PS3111主控pSLC模式,带固件下载
  10. /usr/bin/ssh-copy-id: ERROR: ssh: Could not resolve hostname 192.168.0.114:root/.ssh/authorized_keys
  11. 720P、1080P、2K、4K的区别
  12. View inflate 原理
  13. 52单片机led灯闪烁c语言程序,单片机LED灯闪烁程序
  14. 词袋模型BoW和词集模型SoW比较
  15. 2021laysns内核仿大婶娱乐网模板整站源码 非常漂亮 可做娱乐资源网 整站打包源码
  16. oracle日期转换为季度,ORACLE时间字段取年、月、日、季度
  17. 固态LiDAR,半固态混合LiDAR,机械LiDAR
  18. Android 屏幕 长虹电视,【沙发管家】长虹智能电视多屏互动使用教程
  19. 【原创】使用easyBCD管理多个系统的2个小问题
  20. 索尼vgn ux拆屏幕_UX最佳实践:如何设计可扫描的应用程序屏幕截图

热门文章

  1. CodeForces - 976C(结构体排序思维)
  2. 血腥!实况转播SQL注入全过程,让你知道危害有多大。
  3. 数据结构 详解(C++)
  4. 欧拉定理以及欧拉降幂
  5. python的类变量和成员变量用法_python中类变量和成员变量、局部变量总结
  6. 烟台市计算机二级培训机构,烟台市2020年3月计算机二级报名时间|网上报名入口【12月20日9:00开通】...
  7. 华为ospf配置命令_教你使用华为Ensp模拟器配置OSPF路由协议(一)
  8. 台式计算机鼠标应该插哪里,鼠标插在电脑哪里 鼠标的usb接口没反应如何解决...
  9. smack android 示例代码,android客户端xmpp smack openfire简单开发实例
  10. Android 如何优雅地实现@人功能?