猿问

自动分号插入和返回语句

如您所知,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?任何人都可以提供有关实现的详细信息吗?


PIPIONE
浏览 682回答 3
3回答

侃侃尔雅

正如Christoph指出的那样,您的return语句将在所有浏览器中正常工作。我确实更希望使它更加明确,即使不是对于计算机而是对人类而言,至少要通过将和运算符不同地放置:return a &&       b &&       c;在这种情况下,没有人需要再三思考自动分号是否会造成严重破坏。我只喜欢JavaScript,您的原始代码更容易阅读。
随时随地看视频慕课网APP
我要回答