基本用法
var a = (num1,num2)=> num1+num2
等价于:
var a = function(num1,num2){
return num1+num2
}
如果没有返回值
var f = ()=>void doesNotReturn()
和普通函数的区别
函数里面的this指向调用时所在函数所绑定的对象(定义时所在的对象)
箭头函数的this指向父元素
this是function内部被创建
箭头函数不能使用arguments
对象,该对象在函数体内部不存在。如果要用,可用rest参数代替
var b = (...values) => {
var a = "2";
console.log(values)
return a
};
b(1,2,3);
//[1,2,3]
ES6引入了rest参数(形式"…变量名"),用于获取函数的多余参数,这样就不需要使用arguments对象。rest参数搭配的变量是一个数组,该变量将多余的参数放入其中。
箭头函数this指向的原因
通过阮一峰的教程:
箭头函数this指向的固化,并不是箭头函数内部有绑定this的机制,实际原因是箭头函数根本没有自己的this,导致内部的this就是外层代码块的this,正因为他没有this,所以就不能用作构造函数
实例:
window.a1 = '1-1'
//let 声明的全局变量不具有全局属性,即不能用window.访问
let a1 = '1-2'
let object = {
a1:'1-3',
b1:()=>{
console.log(this.a1) //this指向window
}
}
let b2 = ()=>{
console.log(this.a1) //this指向window
}
object.b1() //'1-1'
b2() // '1-2'
let声明的对象不具有全局属性,不能用window访问
箭头函数不能使用call和apply改变其运行的作用域
window.a1 = '1-1';
let a1 = '1-3'
let obj = {
a1:'1-2',
}
let b1 = (){
console.log(this.a1)
}
b1().apply(obj) //'1-1'