Arrow functions in javascript
CoffeeScript is influencing javascript with fat arrows! As python had influenced it before with list comprehensions.
Well, the grammer looks like :
AssignmentExpression :
ArrowFunctionExpression
...
ArrowFunctionExpression :
ArrowFormalParameters => [lookahead ∉ { "{" }] AssignmentExpression
ArrowFormalParameters => Block
ArrowFormalParameters :
( FormalParameterList_opt )
Identifier
Grammer in simple English :
=> works as a function keyword.
(Parameters) are placed before the =>.
{} are needed for the function body if there are more than one line or else it's optional.
For one liners an explicit return is not needed, for others it's needed.
Some examples from the proposal :
// Empty arrow function returns undefined let empty = () => {}; // Single parameter case needs no parentheses around parameter list let identity = x => x; // No need for parentheses even for lower-precedence expression body let square = x => x * x; // Parenthesize the body to return an object literal expression let key_maker = val => ({key: val}); // Statement body needs braces, must use 'return' explicitly if not void let odds = evens.map(v => v + 1); let fives = []; nats.forEach(v => { if (v % 5 === 0) fives.push(v); }); // ''=>'' has only lexical ''this'', no dynamic ''this'' const obj = { method: function () { return () => this; } }; assert(obj.method()() === obj); let fake = {steal: obj.method()}; assert(fake.steal() === obj); // But ''function'' still has dynamic ''this'' of course let real = {borrow: obj.method}; assert(real.borrow()() === real);
Do read arrow function syntax simplified on the ES discussion list!
Making is more easier :
var sum = function(a,b){return a+b;}
Can be re-written with fat arrows as :
let sum = (a,b) => return a+b;
Ok, it's time for me to let sleep = dream => 'zzz' + 'zzzz...';
;) [ Yes dream is lost! ]
Recent blog posts
- watir-webdriver web inspector
- gem list to gemfile
- Packing ruby2.0 on debian.
- Made it into The Guinness Book!
- to_h in ruby 2.0
- Filter elements by pattern jQuery.
- Better HTML password fields for mobile ?
- Grayscale image when user offline
- nth-child CSS pseudo-class Christmas colors
- EventEmitter in nodejs