찾다

 >  Q&A  >  본문

javascript - JS의 함수 승격에 관해 질문하고 싶습니다.

다음 코드:

으아악

실행 후에는 출력이 정의되지 않습니다.

if 조건을 제거한 후 두 번째 함수가 출력됩니다

으아악

함수가 개선되었다는 사실을 알고 두 번째 코드에서는 두 번째 함수가 console.log(a) 코드 이전으로 승격되므로 두 번째 함수가 실행되어 출력됩니다.
하지만 첫 번째 코드에서는 왜 정의되지 않음이 출력되는지 이해가 되지 않습니다.

代言代言2753일 전633

모든 응답(3)나는 대답할 것이다

  • 代言

    代言2017-06-12 09:32:06

    조건부 함수 선언은 함수 표현식과 동일한 방식으로 처리됩니다. 따라서 조건부 함수 선언은 함수 선언의 호이스팅 속성을 잃습니다.

    참조 URL: /q/10...

    회신하다
    0
  • 怪我咯

    怪我咯2017-06-12 09:32:06

    if else 문에서 function 키워드를 사용하여 함수를 선언할 때 변수 승격은 브라우저마다 다릅니다. 단지 변수 선언이 여기서 승격되고 else가 제거되면 순수 함수 범위가 됩니다.

    으아악

    회신하다
    0
  • 学习ing

    学习ing2017-06-12 09:32:06

    IIFE에서

    으아악

    는 함수 선언이 아닌 함수 선언입니다. if를 제거하면 함수 선언입니다. conosle.log(a)는 정의되지 않은 변수 a를 나타냅니다. https://developer를 참조하세요. mozilla.org..

    회신하다
    0
  • 취소회신하다