let과 함수 선언 충돌 
function foo() {
  console.log(typeof bar); // (1)
  let bar = 100;
  function bar() {}
  console.log(typeof bar); // (2)
}
foo();
JavaScript
복사
정답
함수 표현식 vs 함수 선언 
function foo() {
  console.log(typeof bar); // (1)
  var bar = function () {};
  function bar() {}
  console.log(typeof bar); // (2)
}
foo();
JavaScript
복사
정답
함수 표현식 vs 함수 선언 
function foo() {
  function bar() {}
  console.log(typeof bar); // (1)
  {
    var bar = 123;
    console.log(typeof bar); // (2)
  }
  console.log(typeof bar); // (3)
}
foo();
JavaScript
복사
정답
함수 안에서 함수 재정의 
function foo() {
  console.log(typeof bar); // (1)
  function bar() {
    return 'first';
  }
  console.log(bar()); // (2)
  function bar() {
    return 'second';
  }
  console.log(bar()); // (3)
}
foo();
JavaScript
복사
정답
함수 표현식 vs 함수 선언 
function foo(bar) {
  console.log(typeof bar); // (1)
  var bar = 42;
  function bar() {}
  console.log(typeof bar); // (2)
}
foo();
JavaScript
복사
정답
블록 스코프 let vs 함수 선언 
function foo() {
  {
    console.log(typeof bar); // (1)
    function bar() {}
    let bar = 123;
    console.log(typeof bar); // (2)
  }
}
foo();
JavaScript
복사
정답