찾다

 >  Q&A  >  본문

javascript - ES6에서 함수 매개변수 기본값에 문제가 있습니까?

함수 매개변수의 기본값이 함수인 상황에 대해 헷갈림이 많습니다
예를 들어

으아아아

Ruan Yifeng의 ES6 소개에 따르면 함수 매개변수가 기본값인 경우 매개변수를 먼저 래핑하는 블록 수준 범위가 있고 초기화가 완료된 후에 블록 수준 범위가 사라진다는 것을 알고 있습니다

매개변수의 기본값이 설정되면, 함수가 선언되고 초기화될 때 매개변수는 별도의 범위(컨텍스트)를 형성합니다. 초기화가 완료되면 이 범위는 사라집니다. 이 구문 동작은 매개변수 기본값이 설정되지 않은 경우 나타나지 않습니다.

기본값이 일반 변수인지는 이해할 수 있지만 여기서 출력이 내부가 아닌 외부인 이유는 아직도 이해가 되지 않습니다

阿神阿神2694일 전1305

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

  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-07-05 11:11:13

    한마디로 함수의 클로저는 실행될 때가 아니라 정의될 때 형성됩니다.

    회신하다
    0
  • 给我你的怀抱

    给我你的怀抱2017-07-05 11:11:13

    구문적 설탕을 철저하게 확장하면 더 명확하게 볼 수 있습니다

    으아악

    보세요, fk_compiler里是不是只能返回外部作用域下的foo?

    회신하다
    0
  • 習慣沉默

    習慣沉默2017-07-05 11:11:13

    js는 어휘 범위이며 foo의 값은 함수가 실행될 때가 아니라 함수가 정의될 ​​때 값을 가져옵니다.

    회신하다
    0
  • 给我你的怀抱

    给我你的怀抱2017-07-05 11:11:13

    응답자 코드 기준:

    으아악

    js는 어휘 범위를 채택하므로 함수가 호출되는 위치나 어떤 형식에 관계없이 어휘 범위는 선언된 위치에 의해서만 결정됩니다.

    fk_compiler被声明的作用域在全局,所以,它会去访问全局作用域中的foo. 답이 나올 것입니다.

    비슷한 코드:

    으아악

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