Hoisting

by sikusikucom

JavaScript

var num = 18;

function foo() {
    // num is undefined, at this point
    console.log(num);

    var num = 9;

    // prints 9
    console.log(num);
}
foo();

// prints 18
console.log(num);

function bar() {
    // prints 18
    // note that there is no redeclaration of 'num'
    console.log(num);
    
    // updates the global variable
    num = 10;
    
    // prints 10
    console.log(num);
}
bar();

// prints 10
console.log(num);