Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Does every Javascript function have to return a value?

I'm using Netbeans to add professional-like comments to each function, I write. So I begin each of it with /** and then I press Enter to let Netbeans fulfill default comment scheme for following function.

Up until now I've been using this only for PHP language and in this case Netbeans was always adding @returns {type} part in comment scheme only, if following PHP function really included return statement. On so called "procedures" (functions that does not return any value) this part was missing.

Today I tried the same thing for Javascript function and Netbeans added @returns {undefined} part to comment scheme even though following function does not return anything.

This confused me. Does Netbeans suggests this way, that every Javascript function has to return anything? What should I do? Ignore (or delete) that comment scheme part or follow suggestion (if this is suggestion at all) and add return false; in the end of such function, though it is useless for me?

like image 645
trejder Avatar asked Jun 27 '13 07:06

trejder


People also ask

Does every function returns a value?

Some functions don't return a significant value, but others do. It's important to understand what their values are, how to use them in your code, and how to make functions return useful values.

Does a function always need to return a value?

NO, a function does not always have to have an explicit return statement. If the function doesn't need to provide any results to the calling point, then the return is not needed. However, there will be a value of None which is implicitly returned by Python.


Video Answer


2 Answers

The short answer is no.

The real answer is yes: the JS engine has to be notified that some function has finished its business, which is done by the function returning something. This is also why, instead of "finished", a function is said to "have returned".
A function that lacks an explicit return statement will return undefined, like a C(++) function that has no return value is said (and its signature reflects this) to return void:

void noReturn()//return type void {     printf("%d\n", 123);     return;//return nothing, can be left out, too }  //in JS: function noReturn() {     console.log('123');//or evil document.write     return undefined;//<-- write it or not, the result is the same     return;//<-- same as return undefined } 

Also, in JS, like in most every language, you're free to simply ignore the return value of a function, which is done an awful lot:

(function() {     console.log('this function in an IIFE will return undefined, but we don\'t care'); }()); //this expression evaluates to: (undefined);//but we don't care 

At some very low level, the return is translated into some sort of jump. If a function really returned nothing at all, there would be no way of knowing what and when to call the next function, or to call event handlers and the like.

So to recap: No, a JS function needn't return anything as far as your code goes. But as far as the JS engines are concerned: a function always returns something, be it explicitly via a return statement, or implicitly. If a function returns implicitly, its return value will always be undefined.

like image 94
Elias Van Ootegem Avatar answered Sep 19 '22 16:09

Elias Van Ootegem


No, return is not necessary.

When no return statement is specified, undefined is returned.

like image 26
rhapsodyn Avatar answered Sep 18 '22 16:09

rhapsodyn