Rod*_*ney 5 javascript revealing-module-pattern
我在这个Javascript问题上花了相当多的时间(你可以告诉我我是一个JS菜鸟):
拿一些写得很好的Javascript代码,比如 Revealing Module Pattern的这个例子:
运行它工作正常.然后将"{"移动到下一行(作为C#开发人员,我设置了所有环境,将花括号放在新行上)并再次运行它.
return
{
someMethod : myMethod,
someOtherMethod : myOtherMethod
};
Run Code Online (Sandbox Code Playgroud)
它现在围绕"13 Line break错误'返回'获得了相当多的JS错误." 和Chrome调试器中的"Uncaught SyntaxError:Unexpected token:".
我的问题是,如何在语法上影响这样的Javascript?
我已经在JSFiddle中设置了它 (为了让它工作,将{返回'之后移回到同一行)
因为ECMA标准第12.9节规定您不能在return关键字及其表达式之间添加新行.
ReturnStatement :
return ;
return [no LineTerminator here] Expression ;
JavaScript最糟糕的功能之一是Automatic Semicolon Insertion.
return; // a semicolon is implicitly inserted here
Run Code Online (Sandbox Code Playgroud)
这部分几乎是有效的JavaScript,但不完全,所以你得到一个语法错误:
{
someMethod : myMethod,
someOtherMethod : myOtherMethod
};
Run Code Online (Sandbox Code Playgroud)
如果您曾尝试这样做:
return
[ 1, 2, 3,
4, 5, 6,
7, 8, 9 ];
Run Code Online (Sandbox Code Playgroud)
它会一直返回undefined,这本来就很糟糕.ASI糟透了,但我们现在坚持使用它,特别是因为无分号代码已成为一种时尚.
这是做什么的?
return a
+ b
+ c;
Run Code Online (Sandbox Code Playgroud)
这个?
return e
/ f /g;
Run Code Online (Sandbox Code Playgroud)
好吧,好吧,也许这个人有点做作,也许这不完全是热门话题.但ASI很糟糕.我希望每个人都能得到.