使用 => 来定义, function(){} 等价于 () => {}\
- 箭头函数通常会赋值给一个变量,变量名字就是函数名字,通过变量名字调用函数
例子1 定义一个函数,返回两个数的和
/es5写法:
let add = function(a,b){
return a + b;
}
console.log(add(10,20));//30
/es6箭头函数写法1
let add = (a,b)=>{
return a + b;
}
console.log(add(10,20));//30
/es6箭头函数写法2--更简洁!!!!!!!!!!!!!!!!!!!!!!!!!!
let add =(a,b) => a + b;
console.log(add(10,20));
- 以上代码结论:函数体中只有一句代码,且代码的执行结果就是返回值,可以省略大括号 例子2 只有一个形参数的可以省略小括号,这里的=>val就相当于return{val}
let add = val => val
console.log(add(10));//10
例子3 对象写法 如果返回的是对象或者数组,就得加()包裹返回值,否则会报错
let getObj = id => ({
id:id,
name:'小白'
})
let obj = getObj(1);
console.log(obj);//{id: 1, name: '小白'}
例子4 闭包函数的写法
// es5写法
let fn = (function(){
return function(){
console.log('hello pink');//
}
})();
fn();
//es6箭头函数写法
let fn1 = (()=>{
return ()=>{
console.log('hello listen');
}
})();
fn1();
箭头函数this指向和注意事项****
箭头函数没有this指向,如果在箭头函数中使用this,this关键字将指向箭头函数定义位置中的this
箭头函数内部指向通过作用域链查找,一般是指向父级的this,没有父级会一直往上找
使用箭头函数的注意事项:
1.使用箭头函数,函数内部没有arguments,this指向window
let getVal = (a,b)=>{
console.log(arguments);// arguments is not defined
return a + b;
}
console.log(getVal(1,3));
2.没有this指向,箭头函数不能使用new关键字实例化对象,function函数也是一个对象,但是箭头函数不是一个对象,它其实是语法糖
let Person =()=>{
};
let p = new Person();//Person is not a constructor