为什么`function(){{`在JS合法?

时间:2015-05-14 09:45:51

标签: javascript syntax

我最近看到了一些形式的JS:

function f(x) {{ return x + 1; }}

令我惊讶的是,这在语法上是合法的并且运行良好。起初我认为这是C风格的匿名范围,但它没有引入新的范围:

function f(x) {{ var y = x + 1; } return y;} // no error

为什么JS会接受这些多余的括号?他们如何解释/他们的意思是什么?

1 个答案:

答案 0 :(得分:3)

{}只表示代码的块或#34;组。除非与if语句配对,否则它根本不会做任何有用的事情。 var的范围由Javascript中的function确定,而非块。

ES6中的新let范围为阻止。