ECMAScript 7

指数运算符 运算顺序 求幂运算符具有js中所有二进制运算符的优先级(一元运算符的优先级高于**),意味着其首先应用于所有复合操作。 运算限制 禁止求幂运算符左侧的一元表达式可以消除歧义。 Array.prototype.includes() 值的比较 let v11=[1,NaN,2]; console.log(v11.indexOf(NaN));// -1 console.log(v11.includes(NaN));//true let v12=[1,+0,2]; console.log(v12.indexOf(-0));//1 console.l...

ES6之class

ES6之前 function PersonType(name) { this.name = name; } PersonType.prototype.sayName = function() { console.log(this.name); }; let person = new PersonType("Nicholas"); person.sayName(); // 输出 "Nicholas" console.log(person instanceof PersonType); // true console.log(person instanceof Object); // true class class PersonClass { // 等效于 PersonType 构造...

迭代器与生成器(Iterators and Generators)

前言 for循环存在问题。 遍历器(Iterator)就是这样一种机制。它是一种接口,为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署Iterator接口,就可以完成遍历操作(即依次处理该数据结构的所有成员)。 Iterator的作用有三个:一是为各种数据结构,提供一个统一的、简便的访问接口;二是使得数据结构的成员能够按某种次序排列;三是ES6创造了一种新的遍历命令for…of循环,Iterator接口主要...

ES6 中的let与const

基础 变量的创建方式取决于你如何声明他。 var声明的变量,会被视为在函数级作用域内顶部的位置(不在函数内部则全局) function getValue(condition) { //var value; if (condition) { var value = "blue";//value="blue"; // other code return value; } else { // value exists here with a value of undefined return null; } // value ex...

ES6之解构 destructuring

简化从数据结构中获取相关子集的操作。 1 2 3 let options = { 4 repeat: true, 5 save: false 6 }; 7 // 从对象中提取数据 8 let repeat = options.repeat, 9 save = options.save; 10 11 对象结构语法在赋值语句的左侧使用 对象字面量。 在解构中使用var、let、const声明变量的时候,必须有初始化操作。 1 2 3 let node = { 4 type: "Identifier", 5 name: "foo" 6 }; 7 let { typ...

ES6 中的let与const

基础 变量的创建方式取决于你如何声明他。 var声明的变量,会被视为在函数级作用域内顶部的位置(不在函数内部则全局) function getValue(condition) { //var value; if (condition) { var value = "blue";//value="blue"; // other code return value; } else { // value exists here with a value of undefined return null; } // value ex...