javascript中return的设计缺陷

function a(){
  return {
    "bar":1
  }
}
a()

返回:{bar: 1}
function b(){
  return 
    {
    "bar":1
  }
}
b()

报错:Uncaught SyntaxError: Unexpected token :

原理:

把大括号{放在一行的结尾而不是下一行的开头,因为它会避免在JavaScript的return语句中的一个可怕的设计错误。

javascript有一个自动修复机制——在程序可能有缺陷的时候,自动插入分号补全,但这个机制很不靠谱,常常会掩盖一些错误。

比如:

return {
hello:"world";
};
正常的理解是返回一个字面量构成的对象。

但是如果这么写:

return
{
hello:"world"
};
javascript的自动补全会将上面代码变成:

return;
{
hello:"world"
};
实际返回一个undefined,这种错误不会有任何提示。

原文地址:https://www.cnblogs.com/lezuw/p/11592016.html