箭头函数

105 阅读2分钟

使用 => 来定义, 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