我刚刚发现Firefox接受了以下(很棒的)语法
f = function(x) x+1;
f(17) //gives 18
有谁知道这到底是怎么回事?这有什么标准吗?其他浏览器也接受吗? (我测试了IE 8,它给了我语法错误)
答案 0 :(得分:10)
这不是标准的一部分。文档位于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
答案 1 :(得分:1)
大括号被省略,就像其他控制结构一样(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;
我个人避免使用无支撑结构,因为当代码被不知道如何工作的人修改时,它会导致可维护性问题。