2016-12-16 50 views
0

我已经写了2个javascript函数,但它们不能以相同的方式工作。两个javascript函数不能以相同的方式工作

console.log(func2());未定义。谁能告诉我为什么以及如何解决这个问题?

function func1() 
 
{ 
 
    return { 
 
     bar: "hello" 
 
    }; 
 
} 
 

 
function func2() 
 
{ 
 
    return 
 
    { 
 
     bar: "hello" 
 
    }; 
 
} 
 

 
console.log(func1()); 
 
console.log(func2());

+0

@Amadan:很好的发现,在我的名单上。 –

+0

@ T.J.Crowder:你有一个列表?它是公开的吗? :)有时候我只知道必须有一个重复,但我找不到一个好的。 – Amadan

+0

@Amadan:我有一个非正式的,我只是把它保存在书签中。 :-) –

回答

7

这是因为automatic semicolon insertion从不return后面插入一个换行符,并且在要返回的内容之前,将它看作是终止return语句(例如,在return之后插入;),并且您的函数最终有效返回undefined

0

我知道这一个。它是分号插入。 func2被翻译为

function func2() 
{ 
    return; 
    { 
     bar: "hello" 
    }; 
} 

并返回undefine

相关问题