箭头函数和this

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/Arrow_functions

1.

()=>{c}        无参数return c

a=>{c}         一个参数a return c

(a,b)=>{c}   两个参数a和b return c

aa=>{{cc}}   一个参数aa return 对象cc

引入箭头函数有两个方面的作用:更简短的函数并且不绑定this

eg:

var elements = [
  'Hydrogen',
  'Helium',
  'Lithium',
  'Beryllium'
];

不用箭头函数:
elements.map(function(element) { return element.length; });
用箭头函数:
elements.map(element => element.length);

箭头函数不会创建自己的this,它只会从自己的作用域链的上一层继承this

2.

 

在箭头函数出现之前,每一个新函数根据它是被如何调用的来定义这个函数的this值:

 

  • 如果是该函数是一个构造函数,this指针指向一个新的对象
  • 在严格模式下的函数调用下,this指向undefined
  • 如果是该函数是一个对象的方法,则它的this指针指向这个对象等等

鉴于 this 是词法层面上的,严格模式中与 this 相关的规则都将被忽略。

var f = () => { 'use strict'; return this; };
f() === window; // 或者 global

 

上一篇:CopyOnWriteArrayList源码解析-Java8


下一篇:Java使用数组实现ArrayList的动态扩容