JavaScript中不带花括号的Lambda函数语法

JavaScript中不带花括号的Lambda函数语法,javascript,function,lambda,Javascript,Function,Lambda,我刚刚发现Firefox接受了以下(令人敬畏的)语法 f = function(x) x+1; f(17) //gives 18 有人知道这到底是怎么回事吗?这有什么标准吗?其他浏览器也接受吗?(我测试了IE 8,它给了我语法错误)大括号被省略了,就像你可以忽略其他控制结构一样,它采用了一个块(if,for)。它是这些函数的标准语法的一部分,也许不是函数的标准语法。我想你可以检查一下规格 惯例是,如果省略大括号,则块是以下单个语句(仅一条语句) 比如说 if(x) g=1; 相当于 if(x

我刚刚发现Firefox接受了以下(令人敬畏的)语法

f = function(x) x+1;
f(17) //gives 18

有人知道这到底是怎么回事吗?这有什么标准吗?其他浏览器也接受吗?(我测试了IE 8,它给了我语法错误)

大括号被省略了,就像你可以忽略其他控制结构一样,它采用了一个块(
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;

我个人避免使用无支架结构,因为当代码被不知道如何工作的人修改时,它会导致可维护性问题。

这不是标准的一部分。文件载于


有人在讨论如何在标准中添加一些语法,或者更短的语法。请参见

不仅仅是大括号。return语句也被省略了@不,我在@Boris的链接上也看到了。这是一个非常方便的函数速记!表达式闭包文档链接已更改为新的。