В примере 2 аргумент x передается внешней функции.Внутри внешней функции каждый объект имеет доступ к x, поскольку его область действия покрыта полным блоком кода этой функции.Когда внутренняя функция пытается получить доступ к этому x, она может сделать это легко, поскольку у нее есть доступ к этой области, поскольку она сама присутствует в этой области.Это как когда вы объявляете глобальную переменную и пытаетесь получить к ней доступ внутри функции.Функция имеет доступ ко всем глобальным переменным.
var count=0;
function a()
{
console.log(count++)
}
a();
Приведенное выше вернет количество + 1, и так же будет
function first(x) {
console.log(x)
function second() {
return x + 100
}
return second
}
console.log(first(1)());