如您所知,ECMAscript会尝试变得聪明,如果您未明确编写分号,则会自动插入分号。简单的例子function foo() { var bar = 5 return bar}仍将按预期工作。但是,如果您依靠这一点,则有一些警告。如果我们像这样重写该函数function foo() { var bar = 5 return { bar: bar }}该函数现在将返回,undefined因为解释器将在该return语句之后插入该分号(这就是为什么始终将大括号与一条语句放在同一行的原因)。然而,知道这一切,现在我不知道如何安全的一个return像下面的语句是,跨浏览器和版本function foo() { var a = true, b = true, c = false; return a && b && c;}我只是return statement在生产环境中写过类似的文章。仅仅因为我知道ECMAscript的“问题”而对分号插入不是那么聪明,我现在想知道,该代码能否100%有效。在我对FF / Chrome / IE(最新版本)的首次测试中,这似乎完全可以,但是真的吗?如果除了该行中的语句以外,自动分号插入是否会“唤醒” return?任何人都可以提供有关实现的详细信息吗?
3 回答
侃侃尔雅
TA贡献1801条经验 获得超16个赞
正如Christoph指出的那样,您的return语句将在所有浏览器中正常工作。我确实更希望使它更加明确,即使不是对于计算机而是对人类而言,至少要通过将和运算符不同地放置:
return a &&
b &&
c;
在这种情况下,没有人需要再三思考自动分号是否会造成严重破坏。我只喜欢JavaScript,您的原始代码更容易阅读。
添加回答
举报
0/150
提交
取消