This question already has an answer here:
I have two function of same return type in java script but return type is difference. The using code of snipped id below
function foo1()
{
return {
bar: "hello"
};
}
function foo2()
{
return
{
bar: "hello"
};
}
calling the function..
console.log("foo1 returns:");
console.log(foo1());
console.log("foo2 returns:");
console.log(foo2());
Output the result ....
foo1 returns:
Object {bar: "hello"}
foo2 returns:
undefined
That's because JavaScript interprets
return
{
bar: "hello"
};
as return
statement followed by block creation (which is ignored in runtime). Not as "return an object". And I really don't know why JavaScript devs made such decision.
Anyway ASI inserts ;
after return
resulting in the equivalent code:
return;
{
bar: "hello"
};
The newline after return
is the culprit. Don't use it if you wish to return something.
Its automatic insert of the semicolon here. The rest of code is never reached.
function foo2()
{
return // get a automatic semicolon insert here
{
bar: "hello"
};
}
Please have a look: Warning: unreachable code after return statement
A javascript free you do without semicolon but it puts a automatic semicolon, that is why you get undefined Refer this
function foo1()
{
return {
bar: "hello"
};
}
function foo2()
{
return{
bar: "hello"
};
}
console.log("foo1 returns:");
console.log(foo1());
console.log("foo2 returns:");
console.log(foo2());
来源:https://stackoverflow.com/questions/37045768/why-is-same-return-type-but-result-is-difference