화살표 함수와 일반함수의 차이
JavaScript 관련 글입니다.
- JS Event Loop, 자바스크립트 동작 원리
- 호이스팅이란 , var, let, const 차이
- Three.js에 대해
- script, script async, script defer의 차이
- AJAX가 무엇일까?
- 함수선언식과 함수표현식
- null과 undefined의 차이 간단정리
- setTimeout과 setInterval 요약
- this의 여러가지 의미
- Spread Operator(...)?
- JS class Constructor
- ES6 Destructuring Syntax
- default 파라미터 알아보기
- import / export 를 사용한 모듈식 개발방법
- Optional Chaining (?.)
- 프로미스(Promise)에 대해서
- ES8 - async / await
- Symbol 자료형?
- forEach, for in, for of 알아보기
- JSON형식 변환 방법 - JSON.parse(), JSON.stringify()
- 자바스크립트 가비지 컬렉션
- 화살표 함수와 일반함수의 차이
- JavaScript Array.reduce() 간단히 알아보기
화살표함수?
ES6에 추가된 함수를 표현할 때 사용할 수 있는 다른 방식입니다. 조금 더 간결하게 함수를 정의할 수 있습니다.
// 화살표함수 (arrow function)
const arrowfun = () => {
~
}
일반 함수와의 차이
일단 크게 3가지가 있습니다.
1) this의 차이
일반함수는 함수가 호출될 때 this의 값이 동적으로 결정이 됩니다.
그 값은 상황에 따라 다른데,
- 그냥 함수를 실행했을 경우에는 전역객체(window)를 가리킴.
- 객체 안의 메소드안에 this를 사용했을 경우 그 메소드를 가지고 있는 객체를 가리킴.
- 생성자안에서 실행했을 경우 새롭게 만들어지는 객체, 즉 인스턴스를 가리킴.
- 이벤트리스너에서 사용했을 경우 e.currentTarget을 가리킴.
그러나 화살표함수의 경우는 함수를 선언할 때 this값이 정적으로 결정이 됩니다. 화살표함수에서 this는 언제나 상위스코프의 this를 가리킵니다.
2) 생성자 함수로 사용이 가능한가
일반함수와 다르게 화살표함수는 생성자함수로 사용할 수 없습니다.
const arrowFun = () => {
this.name = 'kim'
}
const kim = new arrowFun(); // Error
3) arguments를 사용할 수 있는가?
일반함수에서는 arguments변수를 사용할 수 있다.
function 함수() {
console.log(arguments);
}
그러나 화살표함수에서 사용하면 에러가 발생합니다.
End.