Синтаксис лямбда-функции в JavaScript без фигурных скобок
Я только что узнал, что следующий (удивительный) синтаксис принят Firefox
f = function(x) x+1;
f(17) //gives 18
2 ответов
Это не является частью стандарта. Документация находится на https://developer.mozilla.org/en/New_in_JavaScript_1.8#Expression_closures_%28Merge_into_own_page.2fsection%29
существует дискуссия о добавлении некоторого синтаксиса вдоль этих строк или даже короче к стандарту. См.http://wiki.ecmascript.org/doku.php?id=strawman:shorter_function_syntax
фигурные скобки опущены, как и для других структур управления, которые принимают блок (if
,for
). Это часть стандартного синтаксиса для них, возможно, не для функций. Думаю, можно проверить спецификацию.
соглашение заключается в том, что если фигурные скобки опущены, блок представляет собой следующий одиночный оператор (только одно заявление).
if(x) g=1;
эквивалентно
if(x){ g=1; }
обратите внимание это
if(x) g=1; f=2;
не эквивалентно
if(x){ g=1; f=2; }
это на самом деле
if(x){ g=1; } f=2;
лично я избегаю конструкции braceless, поскольку это может привести к проблемам ремонтопригодности, когда код модифицируется людьми, которые не знают, как это работает.