2015-05-14 43 views
3

我最近看到表格的一些JS:为什么`function(){{`在JS中合法?

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

令我惊讶的是,这在语法上是合法的,并能正常工作。起初我还以为是C风格的匿名范围,但它并没有引入新的范围:

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

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

+0

这是对'var'声明的变量作用域的误解。 –

+1

'{...}'是一个块。 JS没有_NOT_有块级的范围。所以基本上它什么都不做。 http://stackoverflow.com/questions/18130025/javascript-curly-braces-with-no-function-or-json –

+1

无论谁用双花括号写它,都必须吸烟,因为它什么也不做,即使它是有效 – adeneo

回答

3

{}只是表示代码块或“组”。除非搭配类似if声明之类的东西,否则它根本没有任何用处。 var的范围由Javascript中的function s确定,而不是块。

ES6中新增的let范围为块。

相关问题