function scope sample 5 - garevna/js-course GitHub Wiki
:arrow_backward: scope
:coffee: 5
var __num = 1
function __showNum () {
console.info ( "Вошли в контекст исполнения функции __showNum" )
console.info ( `(1) ${__num}` )
__num ()
console.info ( `(2) ${__num}` )
__num = 10
console.info ( `(3) ${__num}` )
return
function __num () { __num = 5 }
}
__showNum ()
console.info ( `( global ) ${__num}` )
Здесь так же происходит поднятие объявления функции __num ()
Но функция __num () переопределяет значение переменной __num
В контексте выполнения функции __showNum() на момент присваивания переменной __num значения 5 нет другой объявленной переменной __num, кроме самой функции __num ()
Таким образом, до вызова функции __num () в консоль будет выведена функция
После вызова функции __num () в консоль будет выведено новое значение ( 5 ) переменной __num
После этого будет выполнено присваивание нового значения переменной __num и вывод в консоль ( 10 )
Когда функция __showNum() завершит работу, и ее контекст будет "демонтирован", станет активным глобальный контекст, в котором переменная __num имеет значение 1
В этом примере функция __num () переопределила саму себя ( была "function", стала "number" )
:arrow_backward: scope