1. 扩展运算符 内部调用的是数据结构的 Iterator 接口, 因此只要具有 Iterator 接口的对象,都可以使用扩展运算符 ... 如 map,,,, [...arr] 扩展运算符(spread)是三个点(...) 将一个数组转为用逗号分隔的参数序列 console.log(...[1, 2, 3]); // 1 2 3 console.log(1, ...[2, 3, 4], 5); // 1 2 3 4 5 [...document.querySelectorAll('div')]…
解构赋值 从数组中提取值,按照对应位置,对变量赋值 只要等号右边的值不是对象或数组,就先将其转为对象. 由于 undefined 和 null 无法转为对象,所以对它们进行解构赋值,都会报错 let [a, b, c] = [1, 2, 3]; 只要某种数据结构具有 Iterator 接口,都可以采用数组形式的解构赋值 应用: const person = { name: 'RyenToretto', age: 22, sex: '男' }; // 解构赋值 const {name, age,…
ES6 字符串扩展 ES6 加强了对 Unicode 的支持,并且扩展了字符串对象 字符 的 Unicode 表示法 允许采用 \uxxxx 形式表示一个字符, 其中 xxxx 表示字符的 Unicode 码点 这种表示法只限于码点在 \u0000 ~ \uFFFF 之间的字符. "\u0061"    // "a" 超出这个范围的字符,必须用两个双字节的形式表示 "\uD842\uDFB7"    // "…
ES6规定只要函数参数使用了默认值.解构赋值.或者扩展运算符, 那么函数内部就不能显式设定为严格模式,否则会报错 1. 参数的默认值 ES6 允许为函数的参数设置默认值,即直接写在参数定义的后面 函数不能有同名参数 参数初始化会形成一个单独作用域.实际执行的是 let a = 1; 参数默认值是惰性求值的 每次调用函数foo,都会重新计算x + 1,而不是默认p等于 100 let x = 99; function foo(p = x + 1) { console.log(p); } foo()…
对象 1. ES6 允许直接写入变量和函数,作为对象的属性和方法 const foo = 'bar'; /*****************属性的优化********************/ const baz = {foo: foo}; // 优化为 const baz = {foo}; /*****************属性的优化********************/ function f(x, y) { return {x: x, y: y}; }; // 优化为 function…
1. 二进制 和 八进制 新的表示法 前缀 0b(或0B) 表示 二进制 前缀 0o(或 0O )表示 八进制 console.log(0b111110111 === 503); // true console.log(0o767 === 503); // true 如果要将 0b 和 0o 前缀的字符串数值 转为十进制,要使用 Number() 方法 2. Number.isFinite() 检查一个数值是否为有限的(finite),即 不是 Infinity 返回 true 只对数值有效 如…
ECMAScript 6 ECMA 组织 前身是 欧洲计算机制造商协会 指定和发布脚本语言规范,标准在每年的 6 月份正式发布一次,作为当年的正式版本 这样一来,就不需要以前的版本号了,只要用年份标记就可以了. ES6 ES6 既是一个历史名词,也是一个泛指“下一代 JavaScript 语言”, 含义是 5.1 版以后的 JavaScript 的下一代标准,涵盖了 ES2015.ES2016.ES2017 等等, 而 ES2015 则是正式名称,特指该年发布的正式版本的语言标准 一种新的语法从…
唯一容器 Set ES6 提供了新的数据结构 Set Set 结构没有键名,只有键值(或者说 键名 和 键值 是同一个值) 它类似于数组,但是成员的值都是唯一的,没有重复的值 Set 内部判断两个值是否不同,使用的算法叫做“Same-value-zero equality”, NaN 等于自身 它类似于精确相等运算符(===),而 精确相等运算符 认为NaN不等于自身 Set 结构的实例默认可遍历,它的默认遍历器生成函数就是它的 values 方法 Set.prototype[Symbol.it…
1. 模块加载方案 commonJS 背景: 历史上,JavaScript 一直没有模块(module)体系, 无法将一个大程序拆分成互相依赖的小文件,再用简单的方法拼装起来. 其他语言都有这项功能: Ruby 的require Python 的import 甚至就连 CSS 都有@import 但是 JavaScript 任何这方面的支持都没有,这对开发大型的.复杂的项目形成了巨大障碍 在 ES6 之前,社区制定了一些模块加载方案,最主要的有: CommonJS     用于服务器 AMD …
Promise 对象 异步编程 方案,已同步的方式表达异步的代码,解决回调地狱的问题 比传统的解决方案——回调函数和事件——更合理和更强大 是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果. 从语法上说,Promise 是一个对象,从它可以获取异步操作的消息. Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理 基本使用 const promise = new Promise(function(resolve, reject) { // ... s…