함수 매개변수의 기본값이 함수인 상황에 대해 헷갈림이 많습니다
예를 들어
Ruan Yifeng의 ES6 소개에 따르면 함수 매개변수가 기본값인 경우 매개변수를 먼저 래핑하는 블록 수준 범위가 있고 초기화가 완료된 후에 블록 수준 범위가 사라진다는 것을 알고 있습니다
매개변수의 기본값이 설정되면, 함수가 선언되고 초기화될 때 매개변수는 별도의 범위(컨텍스트)를 형성합니다. 초기화가 완료되면 이 범위는 사라집니다. 이 구문 동작은 매개변수 기본값이 설정되지 않은 경우 나타나지 않습니다.
기본값이 일반 변수인지는 이해할 수 있지만 여기서 출력이 내부가 아닌 외부인 이유는 아직도 이해가 되지 않습니다
给我你的怀抱2017-07-05 11:11:13
구문적 설탕을 철저하게 확장하면 더 명확하게 볼 수 있습니다
으아악보세요, fk_compiler
里是不是只能返回外部作用域下的foo
?
给我你的怀抱2017-07-05 11:11:13
응답자 코드 기준:
으아악js는 어휘 범위를 채택하므로 함수가 호출되는 위치나 어떤 형식에 관계없이 어휘 범위는 선언된 위치에 의해서만 결정됩니다.
fk_compiler
被声明的作用域在全局,所以,它会去访问全局作用域中的foo
. 답이 나올 것입니다.
비슷한 코드:
으아악