【发布时间】:2011-05-02 12:54:08
【问题描述】:
【问题讨论】:
标签: javascript automatic-semicolon-insertion
【问题讨论】:
标签: javascript automatic-semicolon-insertion
Javascript 在可能的任何换行符处假定语句结束。例如:
return
true;
被解释为:
return;
true;
将返回和它的参数变成两个单独的语句,这当然意味着函数没有返回值(返回未定义)。
不久前我写了一封 blog entry 关于那件事。
【讨论】:
我发现的最重要的事情之一是,假设您有一个返回坐标(或任何对象)的函数,类似于此。
function getCoordinates() {
return
{
x: 10,
y: 10
};
}
你会期望取回一个对象,对吧?错误的!你回来未定义。解释器将代码转换成这个
function getCoordinates() {
return;
{
x: 10,
y: 10
};
}
因为return 本身就是一个有效的声明。你需要确保将return写成如下
function getCoordinates() {
return {
x: 10,
y: 10
};
}
【讨论】:
null,你得到undefined。
告诉我这个特殊功能的陷阱的例子是“最奇怪的语言功能?”中的this one。题。 (这就是我为什么要重新提出这个问题的原因,顺便说一下 - 这是一个宝贵的学习资源。)
可以在这里找到好的参考资料:What are the rules for Javascript's automatic semicolon insertion?
【讨论】: