根据这里所述,如果JavaScript程序包含一个不符合正式语法规则的标记,那么会在该位置插入分号,如果(a)在该位置有换行符,或者(b)意外的标记是闭括号。经典的例子是:
这使我相信单独的
为什么在第一段代码中左花括号被视为无效标记,导致JavaScript插入分号,但是在第二个代码中左花括号不被视为无效标记,这表明没有错误发生。
显然我的其中一个假设是错误的,我希望有人能帮助我理解哪个是错的。
return // <--- semicolon inserted there
{
id: 12
};
这使我相信单独的
{
不是有效的。但是下面这段(无意义的)代码会弹出 2,没有错误。function foo() {
var x = 1;
{
var y = 2; //yes, I know y has the same scope as x
} //and that this is therefore pointless
alert(y);
}
为什么在第一段代码中左花括号被视为无效标记,导致JavaScript插入分号,但是在第二个代码中左花括号不被视为无效标记,这表明没有错误发生。
显然我的其中一个假设是错误的,我希望有人能帮助我理解哪个是错的。
return
是完全有效的,它将返回undefined
。 - Peterundefined
" 是的,正如第12.9节所述。在“没有区别的区别”类别中,技术上,显式return;
和执行到函数结尾(隐式返回)之间存在差异。在隐式情况下,函数不返回任何东西--但是函数调用表达式然后处理它就像return;
和return undefined;
一样(第13.2.1节)。</geekSilliness> - T.J. Crowder