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