美文网首页js
箭头函数和普通函数的主要区别是什么?

箭头函数和普通函数的主要区别是什么?

作者: 前端葱叶 | 来源:发表于2021-07-08 23:31 被阅读0次

箭头函数和普通函数的主要区别:

  • this的指向问题,箭头函数是不存在this的(也是箭头函数和普通函数最主要的区别)
  • 箭头函数没有原型prototype
  • 箭头函数没有argements(类数组)

一、this的指向问题(也是箭头函数和普通函数最主要的区别)

(1)箭头函数是不存在this的,它的this是继承自父执行的上下文中,而且不能使用call、apply、bind来改变this的指向,箭头函数中的this是永远不会改变的。

比如这里的箭头函数的this.x,箭头函数和say平级以key:value的形式,也就是箭头函数本身所在的对象为obj,而obj的父执行上下文就是window,所以这里的this.x实际上表示的是window.x,因此输出11.

var x = 11;
var obj = {
  x:22,
  say:()=>{
    console.log(this.x);
  }
}
obj.say();//11

(2) 普通函数this指向的是它的直接调用者。

// 普通函数
var name = "ice";
var obj = {
  name: "leaf",
  getName: function() {
    console.log(this.name);//this指的是它的直角调用者,就是obj,所以返回leaf
  }
};
obj.getName(); // 此时指向调用者obj,输出leaf

//箭头函数
var name = "ice";
var obj = {
  name: "leaf",
  getName: () => {
    console.log(this.name); 
    // 指向定义时所在的对象,name是在全局的环境下创建的,所有this指向的是全局对象
}
};

obj.getName();//ice

var obj1 = { name: "haha" };
obj.getName.call(obj1); // 无法改变this指向  输出还是ice

二、箭头函数没有原型prototype,是不能够被作为构造函数调用的,会报错;

//普通函数
function Person() {
  console.log("person");
}//定义一个构造函数

const myFather = new Person();//构造函数的实例化对象

//箭头函数
let Person2 = () => {
  console.log("person2");
}
console.log(Person2.prototype);//undefined
const myFather2 = new Person2();////Person2 is not a constructor

三、箭头函数没有argements(类数组),只能基于...arg来获取参数集合(数组)

let Person2 = () => {
  console.log(person2.argements);
}
Person2(10,20,30)// Person3 is not defined

//只能使用...arg来获取参数集合(数组)
let Person2 = (...arg) => {
  console.log(arg);
}
Person2(10, 20, 30)// [10, 20, 30]

持续补充更新,记录不好的地方望指出修改,共同进步~

相关文章

  • 箭头函数和普通函数的主要区别是什么?

    箭头函数和普通函数的主要区别: this的指向问题,箭头函数是不存在this的(也是箭头函数和普通函数最主要的区别...

  • 箭头函数和立即执行函数

    箭头函数 箭头函数和普通函数有什么区别?如果把箭头函数转换为不用箭头函数的形式,如何转换主要是this的差别,箭头...

  • 函数的扩展

    函数的扩展 箭头函数和普通函数区别箭头函数没有this对象,箭头函数的里的this始终指向定义时所在对象,普通函数...

  • 2019-01-11

    ES6 箭头函数 箭头函数表示法:()=>console.log('Hello') 箭头函数和普通函数的区别 和普...

  • js理解普通函数和箭头函数

    普通函数: 箭头函数: 区别: 构造函数和原型 箭头函数不能作为构造函数 不能new。会报错 箭头函数没有原型属性...

  • 箭头函数和普通函数有什么区别?

    题目:箭头函数和普通函数有什么区别?箭头函数为什么不能用作构造函数? 参考答案 区别: 箭头函数在一些情况下书写更...

  • 改变this指向的方法

    箭头函数和普通函数的区别如下。 普通函数:根据调用我的人(谁调用我,我的this就指向谁) 箭头函数:根据所在的环...

  • 前端面试必会面试题

    1、箭头函数和普通函数的区别 1.箭头函数是匿名函数,不能作为构造函数,不能使用new 2.箭头函数不绑定argu...

  • 箭头函数

    引入箭头函数有两个方面的作用:更简短的函数并且不绑定this 普通函数和箭头函数的区别: 箭头函数的this指向规...

  • 箭头函数与普通函数的区别

    箭头函数与普通函数的区别,实质是我们是否理解了箭头函数,在我刚开始接触ES6时,印象中的箭头函数与普通函数的区别就...

网友评论

    本文标题:箭头函数和普通函数的主要区别是什么?

    本文链接:https://www.haomeiwen.com/subject/gosxpltx.html