Hector Yeomans Blog

ES6 Arrow functions

September 21, 2015

Last night I was reading this post: ES6 arrow functions, syntax and lexical scoping and going through the comments I saw this question:

so arrow functions always inherit scope?

The answer was by Barney: always.

I went to the console and typed:

nvm use 4
node
var doSome = () => { console.log(this.x) }
doSome.call({x: 'hello'});
global.x = 'hello';
doSome.call({x: 'good bye'});

Could you guess what is going to be printed?

I could replicate this on ES5 without fat arrow function.

nvm use 0.10
node
var doSome = function() { console.log(this.x) }.bind(void(0));

doSome.call({x: 'hello'});

global.x = 'hello';
doSome.call({x: 'good bye'});

What do you think? What does Babel does?


Hector Yeomans

Written by Hector Yeomans who lives Mexico and works remotely for Invision. Follow him on Twitter, or add him on LinkedIn.