찾다

 >  Q&A  >  본문

javascript - 함수 선언과 선언된 변수가 동시에 존재하는 경우 승격 규칙은 무엇입니까?

우리는 변수 선언이 승격된다는 것을 알고 있습니다:

으아악

동시에 함수 선언도 승격됩니다.

으아악

그렇다면 변수 선언과 함수 선언이 모두 있을 때, 누가 맨 위에 오를 것인가? 정렬하는 방법? 예:

으아악

그런가요?

으아악

"JAVASCRIPT You Don't Know"에서 이 문장을 보고 조금 혼란스러웠기 때문에:

함수 선언과 변수 선언이 승격됩니다. 그러나 주목할만한 세부 사항은 함수가 먼저 승격된 다음 변수가 승격된다는 것입니다. 함수 선언은 일반 변수보다 먼저 호이스팅됩니다.

그러면 다음과 같이 정렬됩니다:

으아악

정렬 규칙을 찾아보세요. 감사합니다!

高洛峰高洛峰2745일 전568

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

  • 仅有的幸福

    仅有的幸福2017-05-18 10:57:55

    이 "개선 우선"이라는 말은 실제로는 표면적인 오해입니다. 사양은 특별한 순서가 없습니다(V8 구현에 관심이 있는 경우 여기에서 읽을 수 있습니다).

    var 的提升是声明跟赋值分开,function 개선은 전체적인 개선이므로

    으아악

    이렇게 되겠지

    으아악

    그래서 기능이 먼저 승격되는 효과가 있습니다.

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-05-18 10:57:55

    우선 4가지 콘텐츠로 나눌 수 있어요

    으아악

    프로모션 후 정렬 형식이 어떤지 알고 싶습니다.
    현재 알려진 조건은 변수 할당 이전에 변수 선언이 승격되므로 당분간 내부 순서에 관계없이 변수 선언을 처음 두 자리에 먼저 넣을 수 있다는 것입니다.

    으아악

    다음으로 선언 모듈과 할당 모듈의 내부 순서를 각각 결정해 보겠습니다.
    실험을 수행하기 위해 foo 기능을 확장했으므로 현재 순서는 다음과 같습니다.

    으아악

    왜 이렇게 바꿨는지 걱정하지 마세요. 실험을 진행하면서 이해해 보도록 하겠습니다.
    이해를 돕기 위해 실험은 2번에 걸쳐 진행되었습니다.
    첫 번째: 변수 선언 모듈을 실험합니다.

    으아악

    그런 다음 변수 할당 모듈을 실험해 보겠습니다.

    으아악

    실험을 해보자:

    으아악

    실험 결과를 바탕으로 최종 순위 결과는 다음과 같습니다.

    으아악

    회신하다
    0
  • 黄舟

    黄舟2017-05-18 10:57:55

    으아아아

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