当前位置: 首页 > news >正文

ES6:箭头函数

ES6中新增的定义函数的方式 (箭头函数是用来简化函数定义语法的)

() => { }
const fn = () => { }

1、在箭头函数中,函数体中只有一句代码,且代码的执行结果就是返回值,可以省略大括号

const sum = (num1,num2) => num1+num2;
const result = sum(10,20);
console.log(result);

2、如果形参只有一个,可以省略小括号

function fn(v){
           return v;
       }
       
//简化后的写法
const fn = v => v;

3、箭头函数不能绑定this关键字,箭头函数中的this,指向的是函数定义位置的上下文this

	   const obj = {name:"张三"}

       function fn(){
           console.log(this);
            //箭头函数没有自己的this,所以箭头函数的this是指向fn()的this,
            //而fn()中的this通过call绑定到了obj对象上
           return () => {
               console.log(this);
           }
       }

       //将fn中的this指向obj对象,定义resFn来接收匿名函数返回的结果,此时这个匿名函数也是个箭头函数
       const resFn = fn.call(obj);
       //输出this,此时的this指向的也是obj对象
       resFn();

一道面试题:以下代码弹出的结果是什么?

const obj = {
           age:18,
           say:() => {
               alert(this.age)
           }
        }

        obj.say();

答案是undefined,这是因为对象是不能产生作用域的!这个say()箭头函数是被定义在了全局的作用域上,所以say()里面的this指向的是window,而age属性在全局作用域上没有定义,所以弹出的是undefined

相关文章:

  • 十分钟教你弄懂深浅拷贝
  • 一篇文章教你弄懂到底什么是BFC
  • <template>标签的用法
  • JS获取JSON字符串的几种方式
  • JS关于定义函数的区别(为啥推荐第二种方式)
  • 关于对JS立即执行函数(function(){...})()的深度理解
  • 10分钟Canvas从入门到实践
  • e.target与e.currentTarget的区别
  • 解决:微信小程序饼状图组件层级过高覆盖在日历选择器上
  • JS中数组splice方法使用需要注意的点
  • JS中for,for...in,for...of和forEach的用法和区别
  • JSON.parse和JSON.stringify的用法
  • 一文搞懂JS中变量作用域的那些事
  • JS给函数添加属性
  • 开发中常见的一些Bug
  • [ JavaScript ] 数据结构与算法 —— 链表
  • [笔记] php常见简单功能及函数
  • [译] 怎样写一个基础的编译器
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • CSS 专业技巧
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • Git同步原始仓库到Fork仓库中
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • JavaScript实现分页效果
  • Rancher如何对接Ceph-RBD块存储
  • text-decoration与color属性
  • uva 10370 Above Average
  • 当SetTimeout遇到了字符串
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 将 Measurements 和 Units 应用到物理学
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 主流的CSS水平和垂直居中技术大全
  • RDS-Mysql 物理备份恢复到本地数据库上
  • 阿里云API、SDK和CLI应用实践方案
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • !$boo在php中什么意思,php前戏
  • # 飞书APP集成平台-数字化落地
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (HAL库版)freeRTOS移植STMF103
  • (翻译)terry crowley: 写给程序员
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (四)JPA - JQPL 实现增删改查
  • (四)linux文件内容查看
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • (转)可以带来幸福的一本书
  • (转载)PyTorch代码规范最佳实践和样式指南