skip to content

Javascript future scope

This was almost magic for me.

In javascript functions can have non local inputs in them which are only declared post the function declaration.

function hello() {
console.log(dude);
}
dude = 'Rambo';
hello(); // => Rambo

Elaborating this a bit

let person = (function() {
function status() {
if (person.checked) {
console.log('checked');
} else {
console.log('not checked');
}
}
function checkPerson() {
person.checked = true;
}
return {
checked: false,
check: checkPerson,
status: status,
};
})();
person.status(); // "not checked"
person.check();
person.status(); // "checked"

It boggled me initially how the definition of function checkPerson was able to understand what person is, turns out it’s some js magic!


Updated on