我有2个JavaScript函数返回相同的对象,一个接一个地调用两个函数,为什么第二个函数返回undefined
?
function foo1()
{
return {
bar: "hello"
};
}
function foo2()
{
return
{
bar: "hello"
};
}
console.log(foo1());
console.log(foo2());
// foo1 returns:
// Object {bar: "hello"}
// foo2 returns:
// undefined
答案 0 :(得分:3)
因为自动分号插入会在return
之后插入分号。
第二个功能变为:
function foo2() {
return; // since no value is mentioned, undefined is returned
{ // This is the start of a block, not an object
bar: 'hello'; // bar is a line label, not a key in an object.
}
}
如果要让return语句分布在多行中,请在同一行上启动对象(如foo1中一样),或将其包装在括号中
function foo2() {
return (
{
bar: 'hello'
}
);
}