Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么'function(){{`在JS中是合法的?_Javascript_Syntax - Fatal编程技术网

Javascript 为什么'function(){{`在JS中是合法的?

Javascript 为什么'function(){{`在JS中是合法的?,javascript,syntax,Javascript,Syntax,我最近看到了表单的一些JS: function f(x) {{ return x + 1; }} 令我惊讶的是,这在语法上是合法的,而且效果很好。起初我以为这是C风格的匿名作用域,但它没有引入新的作用域: function f(x) {{ var y = x + 1; } return y;} // no error 为什么JS接受这些多余的括号?它们是如何解释的/它们是什么意思?{}只是表示一个块或“组”除非与类似于if语句的语句配对,否则它不会做任何有用的事情。var的范围由Javasc

我最近看到了表单的一些JS:

function f(x) {{ return x + 1; }}
令我惊讶的是,这在语法上是合法的,而且效果很好。起初我以为这是C风格的匿名作用域,但它没有引入新的作用域:

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

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

{}
只是表示一个块或“组”除非与类似于
if
语句的语句配对,否则它不会做任何有用的事情。
var
的范围由Javascript中的
函数决定,而不是由块决定


新的
让ES6中的
作用域变为块。

这是对
var
声明的变量作用域的误解。
{…}
是一个块。JS没有块级别的作用域。因此基本上它什么也不做。使用双大括号编写它的人一定是在冒烟,因为它根本不做任何事情,即使它是有效的。所以请参见MDN:。@SergiuParaschiv:从技术上讲,当你在5月份评论JavaScript没有块级别的作用域时,你是正确的。最终的ES2015规范添加了块级范围(
let
const
class
)直到6月才发布。尽管如此,即使在几年前,文字还是刻在墙上了…:-)