2016-08-31 3 views
0

나는 정확하지 않아야한다고 생각한 것을 발견했습니다. 이벤트가 인수에 전달되는되지 않는어떻게 ES6 Arrow 함수 + Babel을 사용할 때 args에 전달하지 않고 'event'에 액세스 할 수 있습니까?

아래의 코드는 작동하지해야

var myFunc() {console.log(event.target.value)} 

그러나 화살표 기능과 함께 다음 작품 ES6에서 transpile에 바벨을 사용하여

() => {console.log(event.target.value)} 

왜 후자가 작동해야합니까?

더 구체적인 예는이 gist의 43 행에서 찾을 수 있습니다. 여기에서는 반응을 일으키고 Babel을 사용하여 ES6을 가로 채기 때문에 event을 args에서 제거하고 예상대로 작동합니다.

+8

이 코드는 동일하게 작동해야하지만 재현 가능한 예는 제공하지 않았으므로 문제가 무엇인지 말할 수는 없습니다. – loganfsmyth

+1

첫 번째 코드가 유효하지 않은 이유는 무엇입니까 (유효한 코드 인 경우)? 주변의 스코프에서'event'가 사용 가능한 한 함수는 그것을 접근 할 수 있습니다. – zeroflagL

+0

43 번 줄에서 [gist] (https://gist.github.com/Samlilli/163c6b5eb776adc311cbb32d9dd73c5f)를 가져 와서 arg에서 'event'를 제거하십시오. 여전히 작동합니다. –

답변

0

Internet Explorer (모든 버전인지 확실하지 않음) 이벤트는 window.event를 통해 전달됩니다. 따라서 IE를 사용하여 인수 목록에서 이벤트를 제거하면 여전히 전역 이벤트 객체를 참조 할 수 있습니다.

편집 : 사실 다른 브라우저에서도 사용할 수 있습니다. 방금 Chrome에서 테스트했습니다. 어떤 브라우저가이 속성을 정확히 지원하는지 잘 모르겠습니다.

+0

특히 [파이어 폭스 없음] (http://stackoverflow.com/q/20522887/1048572). – Bergi

관련 문제