我听说过Javascript插入“;”自动,这可能会导致问题

时间:2010-10-29 17:05:19

标签: javascript automatic-semicolon-insertion

我也听说Go也插入了它们,但它们遵循不同的approach

Javascript在解释时如何插入分号?

3 个答案:

答案 0 :(得分:12)

我发现的最重要的事情之一是,假设你有一个返回坐标(或任何对象)的函数,类似于此。

function getCoordinates() {
    return
        {
            x: 10,
            y: 10
        };
}

你会期望找回一个对象吗?错误!你回来了未定义。解释器将代码转换为此

function getCoordinates() {
    return;
        {
            x: 10,
            y: 10
        };
}

由于return本身就是一个有效的陈述。您需要确保按以下方式编写退货

function getCoordinates() {
    return {
            x: 10,
            y: 10
        };
}

答案 1 :(得分:4)

Javascript假定在可能的任何换行符处结束语句。例如:

return
true;

被解释为:

return;
true;

将返回和它的参数转换为两个单独的语句,这当然意味着该函数没有返回值(返回undefined)。

我前一段时间写了blog entry

答案 2 :(得分:2)

在“最奇怪的语言特写”中,这个让我了解这一特定功能缺陷的例子是this one。题。 (顺便说一句,这就是我重新提出这个问题的原因 - 它是一种宝贵的学习资源。)

可以在此处找到好的参考资料:What are the rules for Javascript's automatic semicolon insertion?