Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the use of return statement inside a function?

Tags:

javascript

    var obj = {

        func: function() {    
        return: {
           add: function() {
             }
          } 
        },
        somefunc: function() {
      }
   } 

The orginal code behind where i used to convert this...

var hash = (function() {
     var keys = {};
     return {         
     contains: function(key) {
     return keys[key] === true;         
     },
     add: function(key) { 
     if (keys[key] !== true){
         keys[key] = true;             
     }     
  }; 
})();

Questions:

  1. What is the use of return keyword?
  2. Can i structure like this, my class?
like image 797
John Cooper Avatar asked Jul 03 '11 11:07

John Cooper


3 Answers

On the most basic level, the return keyword defines what a function should return. So if I have this function:

function foo() { return 4; }

And then call it:

var bar = foo();

foo() will return 4, hence now the value of bar is also 4.

Onto your specific example:

In this use case the return is used to basically limit outside access to variables inside the hash variable.

Any function written like so:

(function() {...})();

Is self-invoking, which means it runs immediately. By setting the value of hash to a self-invoking function, it means that code gets run as soon as it can.

That function then returns the following:

return {         
    contains: function(key) {
        return keys[key] === true;         
    },
    add: function(key) { 
        if (keys[key] !== true){
            keys[key] = true;             
        }
    }     
};

This means we have access to both the contains and add function like so:

hash.contains(key);
hash.add(key);

Inside hash, there is also a variable keys but this is not returned by the self-invoking function that hash is set to, hence we cannot access key outside of hash, so this wouldn't work:

hash.keys //would give undefined

It's essentially a way of structuring code that can be used to create private variables through the use of JavaScript closures. Have a look at this post for more information: http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-private-variables-in-javascript/

Hope this Helps :)

Jack.

like image 100
Jack Franklin Avatar answered Oct 17 '22 12:10

Jack Franklin


An anonymous function that is executed immediately is commonly used to create a scope. Any variables that you declare inside the scope is local to the function, so they don't pollute the global scope.

The return statement is used to return an object from the anonymous function:

var hash = (function() {
  return { ... };
})();

You could write the same using a named function:

function createHashObject() {
  return { ... };
}

var hash = createHashObject();
like image 41
Guffa Avatar answered Oct 17 '22 11:10

Guffa


I don't know what is your actual code is but these are the closures john

function addGenerator( num ) {
return function( toAdd ) {
  return num + toAdd
};
}
var addFive = addGenerator( 5 );
alert( addFive( 4 ) == 9 );

in this you can see use of return

like image 1
Ankur Avatar answered Oct 17 '22 12:10

Ankur