我也听说Go也插入了它们,但它们遵循不同的approach
Javascript在解释时如何插入分号?
答案 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?