最近做vue的项目,发现中用了很多es6中的新特性,随后开始恶补es6,发现箭头函数这一简洁的函数写法,不过还是感觉不习惯,箭头函数的格式;

  //有参数var foo = n => console.log(n);var foo = function (n) {console.log(n);}
//  没有参数var foo = () => 1;var foo = function () {return 1;}
//  多个参数var foo = (n1,n2) => n1+n2;var foo = function (n1,n2) {return n1+n2;}//返回值多行要用 {}var foo = (n) => {if(typeof n == 'number') {return n+=1;}}var foo = function (n) {if(typeof n == 'number') {return n+=1;}}

//总结:返回值为单行的时候,可以省去return;

 

 箭头函数中this是一个空对象,在node.js中测试可发现:

    let foo = ()=> {console.log(this)    //    {}}

 

 箭头函数上层还是箭头函数,那么就仍然没有找到,最终都没有找到的话,那就是window对象了。

var number = 100,log = console.log.bind("console");        var obj = {number: 10,print: ()=> {return ()=> {log(this);                     //window    log(this.number);              //100}}
};obj.print()();

  

如果上层是function格式的函数,那么就会绑定到箭头函数的this

var number = 100,log = console.log.bind("console");var obj = {number:10,print: function () {return () => {log(this);                   //objlog(this.number);            //10} }  }obj.print()();

  

  并不是因为箭头函数内部有绑定this的机制,实际原因是箭头函数根本没有自己的this,它的this是继承外面的,因此内部的this就是外层代码块的this。

 

  产生箭头函数的绑定,箭头函数的this不再多变,(根据声明时,所绑定的执行,而不是运行时的对象) 

function函数this运行时绑定的理解://代码段1var number = 10;
function foo () {console.log(this.number);
};var obj = {number:100,foo: foo
};obj.foo();     //100//代码段2var number = 10;
var obj = {number:100,foo: function () {console.log(this.number)}
}
obj.foo()    //100

  function函数this是再代码运行时期绑定而不是在声明时期绑定的,而箭头函数是根据声明时绑定执行的,箭头函数的this不再多变

  

转载于:https://www.cnblogs.com/wlgz/p/7183729.html

es6箭头函数this问题相关推荐

  1. ES6箭头函数中的this指向

    1箭头函数中的this (1)箭头函数中没有this : 这意味着 call() apply() bind() 无法修改箭头函数中的this (2)箭头函数中的this指向 :访问上一个作用域的thi ...

  2. es6 箭头函数 rest参数 扩展运算符

    Es6 箭头函数 语法: 普通函数: fn=function(){} 箭头函数: fn=()=>{} 特性: this是静态的,this始终指向函数声明时所在作用域下的this的值(使用call ...

  3. es6 箭头函数使用_如何使用ES6箭头功能使JavaScript易于阅读

    es6 箭头函数使用 Arrow functions are the new fundamental building blocks of building modern web applicatio ...

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

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

  5. ES6箭头函数以及promise/async/await测试案例

    ES6箭头函数的运用 下面以一段代码解释 function one(){return 1 以上函数用箭头函数写步骤,参考下面代码 {}和里面的东西先删去 one = (里面写参数/无参数的里面为空)= ...

  6. [OHIF-Viewers]医疗数字阅片-医学影像-ES6箭头函数(=)

    [OHIF-Viewers]医疗数字阅片-医学影像-ES6箭头函数(=>) https://www.liaoxuefeng.com/wiki/1022910821149312/103154957 ...

  7. 什么时候不该使用es6箭头函数 1

    从开始接触es6到在项目中使用已经有一段时间了,es6有很多优秀的新特性,其中最有价值的特性之一就是箭头函数,他简洁的语法以及更好理解的this值都非常的吸引我.但是新事物也是有两面性的,箭头函数有他 ...

  8. Javascript/ES6箭头函数

    Javascript/ES6箭头函数 文章目录 Javascript/ES6箭头函数 一.箭头函数是什么? 二.箭头函数与普通函数的区别 三.箭头函数的使用 1.箭头函数是匿名函数,不能作为构造函数, ...

  9. es6箭头函数(=)与展开特性运算符(...)的使用

    2019独角兽企业重金招聘Python工程师标准>>> 箭头函数的几个写法 //当含有固定个参数的时候,es5写法 function test(a,b){ ..}//es6写法(es ...

  10. es6箭头函数中this

    普通函数: $scope.$on('$stateChangeSuccess',function(){this.list = this.getList();}); 箭头函数: $scope.$on('$ ...

最新文章

  1. DPU加持下的阿里云如何做加密计算?
  2. Tomcat 的数据库连接池设置与应用
  3. bzoj1816: [Cqoi2010]扑克牌
  4. 配电房来了个傻员工,改变了所有聪明的员工!
  5. QString string char*互转
  6. 幂法的c语言程序例子,数值分析之幂法及反幂法C语言程序实例.doc
  7. oracle USER 与 Schema 的关系与区别
  8. 《数据科学R语言实践:面向计算推理与问题求解的案例研究法》一一2.5 为跨年度的个人参赛选手构造记录...
  9. 破除“论文至上”!两部委发文规范SCI指标使用
  10. 用大数据看程序员,让你见到不为人知的一面!
  11. idea 添加配置文件 绿叶子
  12. iptables介绍与实践
  13. 数字社会的下一波浪潮_下一波创业浪潮是自然而然的
  14. 盘式过滤器工作原理介绍
  15. 我的世界如何安装java环境变量_JDK安装与环境变量配置方法
  16. 免费好用的虚拟服务器,六大免费好用的虚拟主机管理系统
  17. Win32 CMD批处理命令
  18. CDA备考学习笔记——基础知识篇(三)
  19. java共享充电宝管理系统演示录像2021计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
  20. java大作业网络聊天室

热门文章

  1. Postgres-XL:基于PostgreSQL的开源可扩展数据库集群
  2. 提高你的Java代码质量吧:让我们疑惑的字符串拼接方式的选择
  3. Zend Studio添加ThinkPHP代码提示方法
  4. [文摘]Maven安装jar包的命令
  5. 关于AndroidSDK配置时的tools目录下找不到adb.exe的错误
  6. 【踩坑之旅】-webpack (v4.8.1) + vue-cli (v2.5.3)升级准备
  7. Kubernetes 集群使用 Jenkins 持续发布
  8. OpenCV——KNN分类算法 摘
  9. POJ1185:火炮(减少国家)
  10. C语言访问MYSQL数据库的完整的代码例子