<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
Keyboard Shortcuts
Shortcut | Action |
---|---|
ctrl + [num] | Toggle nth panel |
ctrl + 0 | Close focused panel |
ctrl + enter | Re-render output. If console visible: run JS in console |
Ctrl + l | Clear the console |
ctrl + / | Toggle comment on selected lines |
ctrl + ] | Indents selected lines |
ctrl + [ | Unindents selected lines |
tab | Code complete & Emmet expand |
ctrl + shift + L | Beautify code in active panel |
ctrl + s | Save & lock current Bin from further changes |
ctrl + shift + s | Open the share options |
ctrl + y | Archive Bin |
Complete list of JS Bin shortcuts |
JS Bin URLs
URL | Action |
---|---|
/ | Show the full rendered output. This content will update in real time as it's updated from the /edit url. |
/edit | Edit the current bin |
/watch | Follow a Code Casting session |
/embed | Create an embeddable version of the bin |
/latest | Load the very latest bin (/latest goes in place of the revision) |
/[username]/last | View the last edited bin for this user |
/[username]/last/edit | Edit the last edited bin for this user |
/[username]/last/watch | Follow the Code Casting session for the latest bin for this user |
/quiet | Remove analytics and edit button from rendered output |
.js | Load only the JavaScript for a bin |
.css | Load only the CSS for a bin |
Except for username prefixed urls, the url may start with http://jsbin.com/abc and the url fragments can be added to the url to view it differently. |