返回后跟花括号和返回之间的差异,然后是下一行中的花括号

时间:2017-07-14 08:10:27

标签: javascript

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

and 

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

两个代码之间是否有任何区别,如果是,请解释。

2 个答案:

答案 0 :(得分:11)

差异很大。第一个返回一个对象。第二个 - 由于Automatic Semicolon Insertion而未定义。 return将成为return;



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


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

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




答案 1 :(得分:3)

出于某种原因,Javascript bods决定一行中的单个return将受到一种称为自动分号插入的“自动更正”机制的约束。

所以你的第二个片段变成了

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

不再符合语法效果!

参考:https://github.com/cbeust/klaxon/blob/master/src/main/kotlin/com/beust/klaxon/DSL.kt

(我现在正在学习Javascript,并且已经为此而堕落了。)