总结一下强大的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) { // 数组名为 argslet 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);//1console.log(b);//2console.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 并不属于箭头函数,而是属于箭头函数外部的“普通”函数。

总结一下强大的ES6符号相关推荐

  1. javascript 符号_掌握javascript es6符号

    javascript 符号 JavaScript is one of the cores of web development. JavaScript, also known as ECMAScrip ...

  2. ES6——符号Symbol

    符号 一.普通符号 1.创建一个符号 2.符号的特点 二.共享符号 1.基础 2.实现 三.知名符号 1.Symbol.hasInstance 2.Symbol.isConcatSpreadable ...

  3. es6 符号 双问号

  4. 350个特性看透ES6

    350个特性看透ES6 介绍 ES6(也称为Harmony,es-nextES2015)是该语言的最新最终定稿规范 该ES6规范是在完成2015年6月,(因此ES2015) 规范的将来版本将遵循该ES ...

  5. 李炎恢ECMAScript6 / ES6+(二)

    16.Set 数据集合 学习要点: 1.Set 数据集合 本节课我们来开始学习 ES6 新增的 Set 数据集合的用法: 一.Set 数据集合 1.ES6 之前只有数组一种数据结构,而现在提供了 Se ...

  6. JS + ES6 高频面试题合集

    目录 js数据类型有哪些 基本数据类型 引用数据类型 内置对象有哪些 数组方法有哪些 数组去重几种方式 1--双重for循环 2--indexOf()方法 3--splice()方法 4--filte ...

  7. ES6笔记(kerwin老师)

    01[let和const] 1.let 1.1块级作用域 什么是块级作用域? 声明的变量只在代码块{}中有效 外部无法访问到这个代码块中的变量. 与var区别: var是全局作用域 经典案例:点击每一 ...

  8. 前端面试题二:ES6/7/8新特性、性能优化、数据交互、H5新特性

    目录 一.ES6/7/8新特性 二.性能优化 三.数据交互 四.H5新特性 一.ES6/7/8新特性 1.ES6中新增了哪些数据类型? Symbol类型(基本) Set类型(复杂) Map类型(复杂) ...

  9. java 函数式编程_函数式编程杂谈

    比起命令式编程,函数式编程更加强调程序执行的结果而非执行的过程,倡导利用若干简单的执行单元让计算结果不断演进,逐层推导出复杂的运算.本文通过函数式编程的一些趣味用法来阐述学习函数式编程的奇妙之处. 一 ...

最新文章

  1. 【模板】树链剖分 P3384
  2. 倒计时7天!博客之星虚位以待,Macbook等你来拿
  3. 2021CVPR顶会冠军带你解密图像分割
  4. 2019运维技能风向标
  5. Absernt line Number Information
  6. org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
  7. 端口复用和重映射--STM32F103
  8. LeetCode 315. 计算右侧小于当前元素的个数(二叉查找树二分查找归并排序逆序数总结)
  9. ado execute open区别_二极管IN4148和IN4007的应用区别
  10. 关于SpringBoot场景启动器
  11. win8 64位 iis8 安装.net1.1
  12. nginx反代+varnish缓存+后端LAMP平台集群实现
  13. Java 方法的反射
  14. 100个java编程实例_100个java编程实例
  15. wget 网页爬虫,网页抓取工具
  16. 【20保研】中山大学2019年“人工智能与科学计算”优秀大学生夏令营活动报名通知...
  17. 人生如梦游戏间,RPG游戏开源开发讲座 JAVA篇 0 ——月晕础润
  18. 关于使用Navicat,Mysql Workbench,PowerDesigner根据mysql数据库生成ER(实体联系图)的解决方案的总结
  19. 使用ffmpeg将mp4格式视频元数据信息转到视频第一帧、转换mp4为ts格式视频
  20. ptx760功能图解_摩托罗拉ptx760写频软件

热门文章

  1. 微信小程序使用echarts
  2. 机器学习笔记 - 互信息Mutual Information
  3. Mutual Supervision for Dense Object Detection(ICCV2021)阅读笔记
  4. 编译原理——证明文法具有二义性
  5. ast自动扣webpack脚本实战
  6. Python Day 67 Dango框架图解(总结)、Wsgiref和uwsgi、前后端传输数据的编码格式、From表单和Ajax方式在前端往后端发送文件、补充一下页面清缓存...
  7. 分享两篇适合程序员看的书籍——《谁动了我的奶酪》、《你的灯亮着吗?》读后感
  8. 又一次回归,再一次记录
  9. 雷军内部信:米家有品拆分 做独立电商
  10. 博弈论2:学会换位思考(弱劣势策略)