찾다

 >  Q&A  >  본문

javascript - 함수 선언 섹션에 함수가 있는데 잘 이해가 되지 않습니다.

이것은 위의 js 고도의 예입니다.
함수 선언에 코드가 있는지 확인하세요

으아아아

이 코드에는 잘못된 구문이 있다고 합니다. 대부분의 브라우저는 두 번째 문을 반환하고 Firefox는 첫 번째 문을 반환합니다. 이유는 무엇입니까?
함수 표현 형태로 바꿀 수 있다면 왜 그럴까요?

으아아아
我想大声告诉你我想大声告诉你2774일 전833

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

  • 黄舟

    黄舟2017-07-05 10:40:34

    첫 번째는 함수 선언인데 일반적으로 if-else에서는 함수를 선언하지 않기 때문이죠

    두 번째는 변수에 익명 함수를 할당하는 것입니다. 프로모션 같은 건 없습니다.

    회신하다
    0
  • 黄舟

    黄舟2017-07-05 10:40:34

    함수 xxx(){}를 직접 작성하면 동일한 이름의 함수가 두 개 있으면 상단에서 var xxx를 두 번 실행하는 것과 같으므로 유효하지 않습니다

    회신하다
    0
  • 伊谢尔伦

    伊谢尔伦2017-07-05 10:40:34

    그 당시 JavaScript 사양은 여전히 ​​ES5였고, 브라우저는 아직 블록 수준 범위(ES2016+)를 구현하지 않았으며 범위 수준은 함수 수준에만 있었습니다. 그래서 썼구나

    으아악

    작성자:

    으아악

    본질적인 차이는 없습니다

    회신하다
    0
  • PHP中文网

    PHP中文网2017-07-05 10:40:34

    js는 미리 선언되어 있습니다! ! ! 함수는 선언될 때 범위 상단에 직접 언급됩니다. if에는 범위가 없으므로 두 함수는 하나의 범위이며 두 번째 함수가 첫 번째 함수를 대체합니다. ! 두 번째 코드의 경우 먼저 변수 sayhi를 선언한 다음 if 판단 후에 sayhi에 값을 할당합니다.

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