티스토리 뷰
자바스크립트에서 이벤트 처리를 하면서 "응? 왜 안 되지? 왜 다르지?"라는 생각을 갖게 되었다.
가장 기초적인 부분이지만 나는 이를 놓치고 "그냥 쓰라니까 써야지"하고 넘어갔던 부분이었다.
<button class="..." id="text-button">USD</button>
<div class="..." id="list">
<a href="#">한국</a>
<a href="#">미국</a>
<a href="#">일본</a>
</div>
document.querySelectorAll("#list a").forEach((menu) =>
menu.addEventListener("click", function() {
document.getElementById("text-button").textContent = this.textContent;
fromCurrency = this.textContent;
})
);
document.querySelectorAll("#list a").forEach((menu) =>
menu.addEventListener("click", () => {
document.getElementById("text-button").textContent = this.textContent;
fromCurrency = this.textContent;
})
);
위의 자바스크립트 코드를 보면 일반 함수 function() {}과 람다식 () => {}로 작성하였다.
버튼에 마우스를 올리면 a링크로 되어 있는 "한국", "미국", "일본"이 리스트로 출력된다.
그리고 그 중 하나를 선택했을 경우, 버튼의 값이 선택한 나라의 값으로 변경이 된다.
그러나 람다식으로 작성할 경우, 나라의 값으로 변경되지 않고 빈 값으로 출력이 된다.
그 이유는 다음과 같다.
일반 함수는 함수를 호출했을 때, this가 동적으로 정해지지만,
람다식. 즉, 화살표 함수는 자신만의 this 객체가 없다. 그리고 정적 범위에서 외부 코드 블록의 this를 참조한다.
화살표 함수에서 this는 함수가 정의된 위치에서 외부 코드 블록의 this 하나로 고정되기 때문에 동적으로 this가 필요한 경우에는 화살표 함수를 사용하면 안 된다.
이는 기초적인 지식의 하나이다. 그러나 나는 이를 확실하게 알지 못하고 "화살표 함수도 적극적으로 활용해봐"라는 말을 듣고 나서 왜 사용해야 하는지. 일반 함수와 다른 점은 무엇인지 알지 못하고 사용했다. 그리고 반성했다. 어떤 기능을 사용할 때는 제대로 알고 나서 사용해야 함을 깨달았다.
'프로그래밍 지식 > Develop Knowledge' 카테고리의 다른 글
검색 창에 사이트 검색하면 일어나는 일 (0) | 2023.06.13 |
---|---|
프론트엔드 개발에 반드시 알아두어야 할 32가지 UI 요소 (1) | 2023.06.10 |
VSCode로 커밋을 했을 때, 실제로 깃허브 Repository에 적용되지 않는 문제 (0) | 2021.12.16 |
자바스크립트 특징 (0) | 2021.04.23 |
프론트엔드가 가지고 있어야 할 지식 (0) | 2021.04.14 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- Frontend
- DB Error MongooseServerSelectionError
- Express
- 최종추가합격
- javascript
- 그룹인터뷰후기
- 개발 이력서 지원 팁
- 코딩테스트 대비
- Singleton
- 포스텍애플아카데미
- 포스텍애플디벨로퍼아카데미
- 고민한 부분
- 원티드 프리온보딩 챌린지
- Default Branch
- 자바스크립트
- #포스텍애플디벨로퍼아카데미
- 개발자이력서꿀팁
- 신입개발자가 준비해야 할 것들
- node
- if(kakao)dev2022
- React
- 깃허브 Merge
- 원티드 프리온보딩
- 싱글톤
- PostechAppleDeveloperAcademy
- LottieFiles
- 프론트엔드 챌린지
- 스프링
- 설명회느낌점
- 조코딩과함께
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
글 보관함