JavaScript中的普通函数和箭头函数的区别和用法详解

  • 在箭头函数中调用 this 时,仅仅是简单的沿着作用域链向上寻找,找到最近的一个 this 拿来使用
    箭头函数在定义之后,this 就不会发生改变了,无论用什么样的方式调用它,this 都不会改变;
function make () {
  return ()=>{
    console.log(this);
  }
}
const testFunc = make.call({ name:'foo' });
testFunc(); //=> { name:'foo' }
testFunc.call({ name:'bar' }); //=> { name:'foo' }
  • 箭头函数中没有自动绑定的局部变量,包括:this,arguments,super(ES6),new.target(ES6)……
    在普通函数中,会自动绑定上的各种局部变量,箭头函数都是十分单纯的沿着作用域链向上寻找……
function foo() {
  setTimeout( () => {
   console.log("args:", arguments);
  },100);
}
foo( 2, 4, 6, 8 );
// args: [2, 4, 6, 8]

//箭头函数中可以利用展开运算符来接收参数
const testFunc = (...args)=>{
  console.log(args) //数组形式输出参数
}
  • 普通函数实现和箭头函数一样的效果
function make () {
  var self = this;
  return function () {
    console.log(self);
  }
}
//或者
function make () {
  return function () {
    console.log(this);
  }.bind(this);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 10,096评论 0 5
  • 函数参数的默认值 基本用法 在ES6之前,不能直接为函数的参数指定默认值,只能采用变通的方法。 上面代码检查函数l...
    呼呼哥阅读 8,851评论 0 1
  • 前言 对于js中的闭包,无论是老司机还是小白,我想,见得不能再多了,然而有时三言两语却很难说得明白,反正在我初学时...
    itclanCoder阅读 9,627评论 1 11
  • 因为书签、明信片,某些记忆碎片呼之欲出,提醒着曾经的阅读,走过的路,以及有过的感动、惊喜和再确认! 精美的书签,不...
    another琼阅读 4,803评论 0 1
  • 想你,在这个秋天 阴天,毛毛雨,穿一件毛衣,撑一把伞,有丝丝寒意直扣心底。原来,秋意已是如此浓厚,我下意识裹裹衣角...
    南宫妍阅读 2,839评论 0 0