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

时间:2012-06-28 20:18:53

标签: javascript

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

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

你可以try it out for yourself on jsFiddle

为什么在没有语法错误的情况下运行?重复括号是什么意思? Javascript是否只是忽略重复的花括号?

3 个答案:

答案 0 :(得分:12)

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

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

答案 1 :(得分:6)

{ x++; }是“Block Statement”。

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

执行每个块内的代码。因此,在某些方面添加额外的{}不会做任何事情。

答案 2 :(得分:3)

括号内的括号只是描述的代码块。您的样本可以扩展到:

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

这很傻,但很好