Every function declared in JavaScript maintains a link to its outer scope. Code inside a declared function will be able to access variables declared outside the itself.

Ex.

const addSuffix = function(suffix) {
    return function(word) { return word + suffix; };
}

const addUm = addSuffix('um');
console.log(addUm('alumin'));
console.log(addUm('vibrani'));
console.log(addUm('adamanti'));

In the above example even though suffix is never defined when we call addSuffix. The function that is returned from addSuffix addUm in this case can access it's parent scope where suffix has been defined as as 'um'. Thus everytime we call addUm it just gets suffix from it's own scope.