链接
箭头函数和普通函数的区别如下。

普通函数:根据调用我的人(谁调用我,我的this就指向谁)

箭头函数:根据所在的环境(我再哪个环境中,this就指向谁)

一针见血式总结:


普通函数中的this:

  1. this总是代表它的直接调用者(js的this是执行上下文), 例如 obj.func ,那么func中的this就是obj

2.在默认情况(非严格模式下,未使用 ‘use strict’),没找到直接调用者,则this指的是 window (常见的window的属性和方法有: alert, location,document,parseInt,setTimeout,setInterval等)(约定俗成)

3.在严格模式下,没有直接调用者的函数中的this是 undefined

4.使用call,apply,bind(ES5新增)绑定的,this指的是 绑定的对象

箭头函数中的this

箭头函数没有自己的this, 它的this是继承而来; 默认指向在定义它时所处的对象(宿主对象),而不是执行时的对象, 定义它的时候,可能环境是window; 箭头函数可以方便地让我们在 setTimeout ,setInterval中方便的使用this

要整明白这些, 我们需要首先了解一下作用域链:

当在函数中使用一个变量的时候,首先在本函数内部查找该变量,如果找不到则找其父级函数,

最后直到window,全局变量默认挂载在window对象下

使用场景
箭头函数适合于无复杂逻辑或者无副作用的纯函数场景下,例如:用在 map、reduce、filter 的回调函数定义中
箭头函数的亮点是简洁,但在有多层函数嵌套的情况下,箭头函数反而影响了函数的作用范围的识别度,这种情况不建议使用箭头函数
箭头函数要实现类似纯函数的效果,必须剔除外部状态。所以箭头函数不具备普通函数里常见的 this、arguments 等,当然也就不能用 call()、apply()、bind() 去改变 this 的指向
箭头函数不适合定义对象的方法(对象字面量方法、对象原型方法、构造器方法),因为箭头函数没有自己的 this,其内部的 this 指向的是外层作用域的 this

箭头函数与普通函数,以及使用场景相关推荐

  1. 箭头函数,匿名函数,为什么用?怎么用?有什么不一样?使用场景是什么?

    箭头函数的使用和一些特性 JS中的箭头函数用=>来标识.箭头函数有两个主要的优点: 更简短的函数: 更直观的作用域和this的绑定(不绑定this) 因为这些优点,箭头函数比起其他形式的函数声明 ...

  2. 详解箭头函数和普通函数的区别以及箭头函数的注意事项、不适用场景

    箭头函数是ES6的API,相信很多人都知道,因为其语法上相对于普通函数更简洁,深受大家的喜爱.就是这种我们日常开发中一直在使用的API,大部分同学却对它的了解程度还是不够深... 普通函数和箭头函数的 ...

  3. Numpy中np.mashgri() 函数介绍及2种应用场景

    @[toc](Numpy中np.mashgri() 函数介绍及2种应用场景 文章目录:) 近期在好几个地方都看到meshgrid的使用,虽然之前也注意到meshgrid的用法. 但总觉得印象不深刻,不 ...

  4. C语言调用es6,ES6 箭头函数、普通函数、调用方法

    importReact,{Component} from'react';import{ Platform,StyleSheet,Text,Image,View,TouchableOpacity,Toa ...

  5. js箭头函数和普通函数区别

    js箭头函数和普通函数区别 实验环境:nodejs v12.16.1 箭头函数不能作为构造函数,而普通函数可以 箭头函数没有原型,而普通函数有 箭头函数return可以省略语句块.(如果=>右边 ...

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

    箭头函数和普通函数有什么区别? 1:写法不一样 2:普通函数存在变量提升的现象 3:箭头函数不能作为构造函数使用 4:两者this的指向不同 5:箭头函数的arguments指向它的父级函数所在作用域 ...

  7. es6箭头函数_【知识点】ES6箭头函数、箭头函数与普通函数的区别

    作者:長安曹公子 文章出处:ES6 - 箭头函数.箭头函数与普通函数的区别 一.基本语法 ES6中允许使用箭头=>来定义箭头函数,具体语法,我们来看一个简单的例子: // 箭头函数 let fu ...

  8. Cathy Zhang 箭头函数与普通函数的区别

    1.外形不同:箭头函数使用箭头定义,普通函数中没有 // 普通函数 function func(){console.log('普通函数可以作为具名函数,也可以是匿名函数'); }// 箭头函数 let ...

  9. 回调函数基本介绍和基本使用场景

    1.回调函数基本定义- 什么是函数指针 通俗来说,函数指针是一个指向特定函数的指针.函数的类型由其参数及返回类型共同决定,与函数具体名称无关.示例代码如下: int testFun1(int para ...

最新文章

  1. Windows+Git+TortoiseGit+COPSSH 安装图文教程
  2. php查找函数所在文件
  3. [eBook] SQL 2008
  4. mysql 事物状态有几种_mysql第三章 事务以及日志
  5. oracle := 和=,oracle a:=100 和 b=:c 区别
  6. spring rmi_Spring远程支持和开发RMI服务
  7. 【译】 WebSocket 协议第八章——错误处理(Error Handling)
  8. linux将程序锁死,Linux死锁现象及分析方法(转)
  9. springboot 手动提交事务_面试官你都工作3年了,也做过5个项目了,怎么连事务机制都不会...
  10. idea中spark项目Scala语言读取properties文件
  11. 每天干攻防,都不会写驱动了
  12. python html5lib时间_如何使用Python模块 html5lib
  13. Rsync 参数详解
  14. java--Date时间
  15. 神经网络drop out
  16. 添加halcon图像显示控件_Halcon的C#二次开发及经验分享
  17. IP跳转,驱动级IP重定向,驱动级IP跳转,IP转向实现代码及流程!
  18. VS2015卸载方法
  19. 微信公众号在打开的网站中直接进入苹果应用商店
  20. 电力电子转战数字IC——路科MCDF全览(持续更新)

热门文章

  1. 浏览器访问Linux的Tomcat
  2. 酒桌上应对(from:http://www.haozai.com/bbs/dispbbs.asp?boardID=6ID=106page=1)
  3. 机器学习在信息安全领域的应用现状和畅想
  4. 深度学习图像算法在内容安全领域的应用
  5. 微软office认证课程
  6. uniapp引入支付宝原生扫码插件步骤详解
  7. android实现自动评论脚本,自动点击器评论器app下载
  8. 第二期项目订房网错误分析
  9. 【新番尝鲜】秀逗魔导士E-revolution——罪名:莉娜*因巴斯
  10. 算法与数据结构实战实验——线性数据结构实现与应用(使用java)