Настоящим материалом на эту тему является новейшая ES Harmony specification draft, а именно деталь, полученная от arrow function syntax proposal. Для удобства, неофициальную версию HTML можно найти here.
Вкратце, этот новый синтаксис позволит более четко описать функции. В проекте ES spec есть все детали, я объясню здесь очень грубо.
Синтаксис является
ArrowParameters => ConciseBody
ArrowParameters
часть определяет аргументы, что функция принимает, например:
() // no arguments
arg // single argument (special convenience syntax)
(arg) // single argument
(arg1, arg2, argN) // multiple arguments
ConciseBody
часть определяет тело функции. Это может быть определено либо так, как оно всегда было определено, например.
{ alert('Hello!'); return 42; }
или в частном случае, когда функция возвращает результат вычисления одно выражение, как это:
theExpression
Если это звучит довольно абстрактно, вот конкретный пример. Все эти определения функции будут идентичны по текущему проекту спецификации:
var inc = function(i) { return i + 1; }
var inc = i => i + 1;
var inc = (i) => i + 1;
var inc = i => { return i + 1; };
Как и в сторону, этот новый синтаксис точно такой же большой синтаксис, который использует C#, чтобы определение функции лямбда.
Ключевое слово 'new' уже работает в предыдущих версиях ES :-) – Bergi
Когда это изменение в ECMAScript 6 просачивается в javascript, поддерживаемый современными браузерами? Кроме того, что вы имеете в виду «возвращение», которое нужно опустить? Невозможно вернуть в текущем javascript опуститься: «В JavaScript отпадение конца функции возвращает undefined»? Вы имеете в виду возврат значения, даже если возврат опускается? Просьба уточнить. –
@meewoK Я имею в виду, что впечатление, которое я получаю от того, что мне удалось найти, заключается в том, что вы не можете написать функцию-преемник как 'function (x) {x + 1}', но вы сможете записать ее как ' x => x + 1', но я не знаю, каков точный критерий разницы. – rwallace