锋利的ES6 — 常用新特性(1)

箭头函数
箭头函数表达式的语法比函数表达式更简洁,并且没有自己的this,arguments,super或new.target。箭头函数表达式更适用于那些本来需要匿名函数的地方,并且它不能用作构造函数。

箭头函数的语法是

 (param1, param2,, paramN) => { statements }

        // 当函数体只有一句而且这一句就是返回值的时候,函数体的{}以及return关键字都可以省略
        // 以下相当于:(param1, param2, …, paramN) =>{ return expression; }
        (param1, param2,, paramN) => expression

        // 但是如果返回值是对象,则要像下面这么写
        params => ({foo: bar})

        // 当只有一个参数时,圆括号是可选的:
        (singleParam) => { statements }
        singleParam => { statements }

        // 没有参数的函数应该写成一对圆括号。
        () => { statements }

箭头函数不会创建自己的this,它只会从自己的作用域链的上一层继承this。因此,在下面的代码中,传递给setInterval的函数内的this与封闭函数中的this值相同

下面我们来看一个例子:

 // 使用箭头函数前
function Person () {
	this.age = 0
	var _this = this
	setInterval(function () {
        // 这里this指向window,所以我们用_this
		_this.age++
	}, 1000)
}
var p = new Person()

// 使用箭头函数
function Person () {
	this.age = 0
	setInterval(() => {
		this.age++; // |this| 正确地指向 p 实例
	}, 1000)
}
var p = new Person()

在项目当中,箭头函数使用非常广泛,因为箭头函数非常简洁,而且没有自己的this,他的this指向外层

1、如果希望this指向内层,就用普通函数
2、如果希望this指向外层,就用箭头函数
3、如果两层this都需要,那就用普通函数并且在外层 var _this = this
解构赋值
ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)

以前,要把数组中的值提取出来,得这么写

 var arr = [2, 5, 7]
 var a = arr[0], b = arr[1], c = arr[2]

ES6可以这么写

var arr = [2, 5, 7]
var [a, b, c] = arr

上面代码表示,可以从数组中提取值,按照对应位置,对变量赋值。

如果解构不成功,变量的值就等于undefined

var arr = [2, 5]
var [a, b, c] = arr

这样的话c就是undefined

但是,也可以给默认值

var arr = [2, 5]
var [a, b, c = 1] = arr

当c可以被解构的时候就等于解构出来的值,没有的话c的值就默认为1

对象也是可以解构赋值的。

但是对象的解构赋值跟数组是有区别的,数组是按顺序解构,对象是按属性名解构,也就是说定义的变量名对应对象的属性名

var person = {
	username: 'Www',
    age: 26,
    gender: 'male'
}
var { username, gender, age } = person

同样的,如果结构失败会得到undefined,同时也可以给默认值

var person = {
	username: 'Www',
    age: 26,
    gender: 'male'
}
var { username, gender, age, height } = person // 这样写 height 就是 undefined
var { username, gender, age, height = 180 } = person // 这样写 sex 就是 180

而且解构赋值还可以嵌套使用

ar person = {
	username: 'Www,
    age: 26,
    gender: 'male',
    likes: ['写博客', '敲代码']
}
var { likes: [ like1 ]} = person
console.log(like1) // 写博客
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值