Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body>
  
</body>
</html>
 
    function playingInBrothersRoom (withToys) {
      // we closure toys which we played in brother's room, when he come back and lock the door
      // your brother suppose to be into outer [[scope]] object now, thanks god you could communicate with him
      var closureToys = withToys || [],
          returnToy, countIt, toy; // just another closure helpers, for brother's inner use
      
      var brotherGivesToyBack = function (toy) {
        // new request, there is not yet closureToys on brother's hand yet, give him a time
        returnToy = null;
        if (toy && closureToys.length > 0) { // if we ask for specefic toy brother going search it
          
          for ( countIt = closureToys.length; countIt; countIt--) {
            if (closureToys[countIt - 1] == toy) {
              returnToy = 'Take your ' + closureToys.splice(countIt - 1, 1) + ', little boy!';
              break;
            }
          }
          returnToy = returnToy || 'Hey, I could not find any ' + toy + ' here, look for another rooms.';
        }
        else if (closureToys.length > 0) { //  otherwise just give back everything he has in the room
          returnToy = 'Behold! ' + closureToys.join(', ') + '.';
          closureToys = [];
        }
        else {
          returnToy = 'Hey, lil shrimp, I gave you everything!';
        }
        console.log(returnToy);
      }
      return brotherGivesToyBack;
    }
    // you are playing in the house, including brother's room
    var toys = ['teddybear', 'car', 'jumpingrope'],
        askBrotherForClosuredToy = playingInBrothersRoom(toys);
    // door is locked, brother came from the shcool, you could not cheat and take it out directly
    console.log(askBrotherForClosuredToy.closureToys); // underfined
    // but you could ask your brother politely, to give it back
    askBrotherForClosuredToy('teddybear'); // hooray, here it is, teddybear
    askBrotherForClosuredToy('ball'); // brother would not be able to find it
    askBrotherForClosuredToy(); // brother gives you all the rest
    askBrotherForClosuredToy(); // nothing left in there
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
anonymouspro
0viewers