返回跟在花括号后面和返回跟在下一行的花括号后面有什么区别?

3
function a(){
 return{
    bb:"a"
 }
}

and 

function a(){
 return
 {
    bb:"a"
 }
}

这两段代码有什么不同,如果有的话,请解释一下。


唯一可能出现的问题是当自动分号插入发生时,在第二种情况下 return 将返回空值。 - abhishekkannojia
2个回答

10
差别很大。第一个返回一个对象。第二个由于自动分号插入而变成未定义。return将变成return;

function a(){
 return{
    bb:"a"
 }
}


function a1(){
 return
 {
    bb:"a"
 }
}

console.log(a(), a1())


只是一个脚注:ASI代表“自动分号插入”-> https://dev59.com/JnE85IYBdhLWcg3wSxkv - Alex

3
由于某些原因,Javascript开发者决定一行代码中只有一个return会受到一种名为“自动分号插入”的“自动校正”机制的影响。
因此,您的第二个片段将变成:
function a1(){
 return;
 {
    bb:"a"
 }
}

这段代码已经不再是语法正确的代码啦!

参考资料:JavaScript 自动分号插入的规则是什么?

(我正在学习 JavaScript,自己也曾经因为这个问题而犯错。)


1
好的。我现在可以以羞愧而死了:D为今天的新事物点个赞吧。 - Suresh Atta
@SureshAtta:你能先和那些决定这是个好主意的人进行一次有力的对话吗?你可以成为替罪羊!幸运的是,我在C和C++中使用K&R风格,所以这不会经常刺痛我。 - Bathsheba

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接