为什么这个疯狂的括号Javascript不会导致语法错误?



我今天在玩一些Javascript片段,注意到这段代码实际上可以运行:

{{for(var i = 0; i < 3; i++) {{{{
  alert(i);
}}}}}}

您可以在jsFiddle上亲自尝试一下。

为什么运行没有任何语法错误?重复的括号是什么意思?Javascript只是忽略重复的大括号吗?

它创建了一个新块,这实际上是无用的1,因为 JavaScript 没有块范围2

1 这是一个美丽的矛盾.
2 然而。

>{ x++; }是一个"块语句"。

{{{ x++; }}}是块中的块。

执行每个块中的代码。 因此,在某事周围添加额外的{}没有任何作用。

括号

中的括号只是划定的代码块。您的样本可以扩展到:

{
    {
        for(var i = 0; i < 3; i++)
        {
            {
                {
                    { 
                        alert(i); 
                    }
                }
            }
        }
    }
} 

这很愚蠢,但很好

最新更新