es6新增内容简单概览
来源:互联网 发布:js div添加点击事件 编辑:程序博客网 时间:2024/06/15 00:23
箭头函数 arrow function
es6新增内容,用箭头语法简写函数,且this会自动绑定当前上下文:
[1, 2, 3, 4].map(d => d * d);//单行 //也可以写多行[1, 2, 3, 4].map(d => { console.log(this) return d * d })
等价于
[1, 2, 3, 4].map(function (d) { return d * d })
class关键字
现在原生支持 class 关键字来声明一个类了,虽然只是一个语法糖,最终还是基于原型继承实现的。但是毕竟可以很方便的实现创建和继承一个类了。
class People{ constructor(name){ this.name=name; } sayName(){ console.log(this.name) } } var pp = new People('张三'); pp.sayName();
等价于
function People(name) { this.name = name }; People.prototype.sayName = function () { console.log(this.name); }; var pp = new People('张三'); pp.sayName();
变量的解构
es6允许多对变量直接赋值,写法上属于“模式匹配”,即等号两边模式相同,右边的值就会根据位置赋予左边变量对应的值。
let [a, b, c] = [1, 2, 3]; //a=1; //b=2; //c=3; let [, , c] = [1, 2, 3] //c=3; let [a, ...b] = [1, 2, 3, 4, 5]; //a=1; //b=[2,3,4,5]; let [a, b, c, ...d] = [1] //a=1; //b=undefined; //c=undefined; //d=[];
函数声明的延伸属性
es6在构建一个函数时候,参数可以不需要指定个数,用延伸属性代替具体位数
function aa(x,...y) { console.log(y)//2,3,4 } aa(1,2,3,4)
函数默认变量
ES6 允许为函数的参数设置默认值,即直接写在参数定义的后面
function log(x, y = 'World') { console.log(x, y);}log('Hello') // Hello Worldlog('Hello', 'China') // Hello Chinalog('Hello', '') // Hello
let和const命令
ES6 新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。
{ let a = 10; var b = 1;}a // ReferenceError: a is not defined.b // 1
const声明一个只读的常量。一旦声明,常量的值就不能改变。
const PI = 3.1415;PI // 3.1415PI = 3;// TypeError: Assignment to constant variable.
iterator遍历器和for..of循环
iterator是一种接口,为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署Iterator接口,就可以完成遍历操作(即依次处理该数据结构的所有成员)。
Iterator 的遍历过程是这样的。
(1)创建一个指针对象,指向当前数据结构的起始位置。也就是说,遍历器对象本质上,就是一个指针对象。
(2)第一次调用指针对象的next方法,可以将指针指向数据结构的第一个成员。
(3)第二次调用指针对象的next方法,指针就指向数据结构的第二个成员。
(4)不断调用指针对象的next方法,直到它指向数据结构的结束位置。
每一次调用next方法,都会返回数据结构的当前成员的信息。具体来说,就是返回一个包含value和done两个属性的对象。其中,value属性是当前成员的值,done属性是一个布尔值,表示遍历是否结束。
var it = makeIterator(['a', 'b']);it.next() // { value: "a", done: false }it.next() // { value: "b", done: false }it.next() // { value: undefined, done: true }function makeIterator(array) { var nextIndex = 0; return { next: function() { return nextIndex < array.length ?{value: array[nextIndex++], done: false} : {value: undefined, done: true}; } };}
一个数据结构只要部署了Symbol.iterator属性,就被视为具有iterator接口,就可以用for…of循环遍历它的成员。也就是说,for…of循环内部调用的是数据结构的Symbol.iterator方法,for…of 是对值的遍历 。
var arr = ['a', 'b', 'c', 'd'];for (let a in arr) { console.log(a); // 0 1 2 3键名的遍历}for (let a of arr) { console.log(a); // a b c d值的遍历}
- es6新增内容简单概览
- ES6 详解二: 新增内容概览
- ES6详解一:复习ES5 新增内容
- 新书《AngularJS半知半解》发布及《JavaScript半知半解》新增内容ES6
- ES6新特性概览
- ES6新特性概览
- ES6新特性概览
- ES6新特性概览
- ES6新特性概览
- ES6新特性概览
- ES6新语法概览
- ES6新特性概览
- ES6新特性概览
- ES6新特性概览
- ES6新特性概览
- ES6新特性概览
- ES6新特性概览
- ES6新特性概览
- 使用getopt命令解析shell脚本的命令行选项
- phaIcon问题
- FTP 服务器的上传和下载
- 属性选择器
- Sublime text 2/3 中 Package Control 的安装与使用方法
- es6新增内容简单概览
- mui的使用
- HDU 6214 Smallest Minimum Cut(求最小割的最少边数)
- Google Dapper 大规模分布式系统的跟踪方案
- 我的CSDN
- python多线程在IO密集型情况下为什么会更快?
- wsdl2java无法生成客户端代码报错无法访问file
- 线段树plus
- web前端之添加过滤器