箭头函数的简单介绍

215 阅读2分钟

「这是我参与11月更文挑战的第16天,活动详情查看:2021最后一次更文挑战

箭头函数和普通函数的区别

(1)箭头函数没有自己的this
首先,对于普通函数而言,会根据自己如何被调用来指向自己的this。构造函数指向新的对象实例;如果该函数是一个对象的方法,this指向这个对象;严格模式就是undefined
箭头函数则不会自动创建this的指向,它会自动从自己的上一层作用域去继承this。不需要再将this赋予给封闭变量来确保this不会误指向其他不需要的对象

//1.this是静态的,this始终指向函数声明时所在作用域下的this的值
function getname1(params) {
    console.log(this.name);
}
let getname2=()=> {
    console.log(this.name);
}

//设置window对象的name属性
window.name='波比'
const hero={name:"男刀"}

//直接调用
getname1();//波比
getname2();//波比

//call方法调用
getname1.call(hero)//男刀
getname2.call(hero)//波比

(2)call和apply方法的调用
因为没有this,箭头函数内的this仅仅充当参数的作用,不能将其绑定到this,也就是不能修改this

(3)严格模式下的规则,所有的this相关的引用会直接失效,无法取用

(4)自身无法绑定Arguments对象,可以使用不定长度的剩余函数(...rest)。但可以引用上一层的作用域的arguments对象。

let addarguments=()=>{
    console.log(arguments);
}
addarguments(1,2,3)

image.png (5)没有构造函数,没有原型。所以new字段不能对箭头函数有效,箭头函数也没有prototype

let Person=(name,age) =>{
    this.name=name;
    this.age=age;
}
let me=new Person('娜美',30);
console.log(me);

image.png

函数的使用

 // 声明一个函数
let fn =function(){
    console.log("普通函数");
}
let add=(a,b)=>{
    return a+b
}
//调用函数
let result=add(1,2)
console.log(result);//3

箭头函数的缩写

省略小括号:当形参有且只有一个的时候
省略花括号:当代码体只有一条语句的时候,此时return必须省略,而且语句的执行结果就是函数的返回值

 //  1)省略小括号
add= n =>{
    return n+n;
}
console.log(add(9));
//  2)省略花括号
let pow = n => n*n;
console.log(pow(9));