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
We can not define more than one method with the same name, Order, and type of the arguments. It would be a compiler error. The compiler does not consider the return type while differentiating the overloaded method. But you cannot declare two methods with the same signature and different return types.
If a class has multiple methods having same name but different in parameters, it is known as Method Overloading.
Overloading with same arguments and different return type − The return type doesn't matter. If they don't have different parameters, they both are still considered as same method and a compile time error will be generated.
Overloaded methods may have the same or different return types, but they must differ in parameters.
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
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.
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());
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With