了解 es6箭头函数

es6箭头函数

箭头函数用 => 符号来定义。
箭头函数相当于匿名函数,所以采用函数表达式的写法。
左边是传入函数的参数,右边是函数中执行的语句。

	var sum =(x,y) =>{return x+y;}
	//相当于
	var sum = function(x,y){
		return x+y;
	}

上面是完整的写法,左边小括号,右边大括号,而下面的情况可以简写:

(1)当要执行的代码块只有一条return语句时,可省略大括号和return关键字:

	var sum  = (x,y) => x+y;

(2)当传入的参数只有一个时,可以省略小括号:

	var ji = x => x*x

和上面一样 相当于一个函数 的参数 为 x return x * x 的值

(3)当不需要参数时,使用空的圆括号:

	var one = () => 1;

同上 所诉 差不多的 意思!!!

需要注意的是, 箭头函数没有自己的this、arguments、super、new.target,它们分别指向外层函数的相应变量。

以前在ES5中使用this有点麻烦,这种问题很常见:

	var a = 1;
	function test(){
		console.log(this.a);   // 2
		var that = this;
		var test2 = function(){
			console.log(this.a)  // 1
			console.log(that.a) // 2
		}
		test2();
	}
	var obj ={
		a:2,
		fn:test
	};
	obj.fn();
	

这就需要在嵌套函数外层使用that = this,然后内层使用that(备份this),相信大家 都 用过吧;

箭头函数中的this指向的是定义时的this,而不是执行时的this。也就是说箭头函数没有自己的this,其内部的this绑定到它的外围作用域。对象内部的箭头函数若有this,则指向对象的外围作用域。

	var a = 1;
	function test(){
		console.log(this.a);   // 2
		var test2 = () => {
			console.log(this.a);   // 2
		}
		test2();
	}
	var obj ={
		a:2,
		fn:test
	};
	obj.fn();
	

是不是 觉得 有点 简单 那就上点 面试题:

window.color = "red";
//let 声明的全局变量不具有全局属性,即不能用window.访问
let color = "green";
let obj = {
    color: "blue",
    getColor: () => {
        return this.color;//this指向window
    }
};
let sayColor = () => {
    return this.color;//this指向window
};
obj.getColor();//red
sayColor();//red

箭头函数无法使用 call()或 apply()来改变其运行的作用域。

window.color = "red";
let color = "green";
let obj = {
  color: "blue"
};
let sayColor = () => {
  return this.color;
};
sayColor.apply(obj);//red
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值