# Hoisting

# var và let

function sayHi() {
  console.log(name);
  console.log(age);
  var name = "Lydia";
  let age = 21;
}

sayHi();
  • A: Lydiaundefined
  • B: LydiaReferenceError
  • C: ReferenceError21
  • D: undefinedReferenceError

KẾT QUẢ là D. varlet đều được Hoisting nhưng chỉ có var được khởi tạo với giá trị là undefined.

# var và function

function test() {
    getName();
    getName2();

    
    var getName2 = function() {
        console.log('2nd name');
    }

    function getName() {
        console.log('Khank');
    }
}

test();

KẾT QUẢ là KhankTypeError: getName2 is not a function. Vậy thì function getName được hoisting và có thể chạy được luôn. Còn getName2 thì như ví dụ trên, giá trị khi hoist là undefined nên gây ra lỗi như vậy.

P/s:

  • getName là Function Declaration
  • getName2 là Function Expression