자바스크립트에서는 일반적으로 사용되는 함수 이외에 화살표함수를 제공합니다.
마치 자바의 람다식처럼 간결한 표현으로 코드를 조금 더 간단하게 사용할 수 있게 하여줍니다.
function abcd1 (){
console.log(1234);
}
var abcd2 = ()=>{
console.log(1234);
}
abcd1(); //1234가 출력됩니다.
abcd2(); //마찬가지로 1234가 출력됩니다.
일반함수와 화살표함수와의 가장 큰 차이는 일반함수는 자신만의 데이터를 가질 수 있는 반면, 화살표 함수는 그렇지 못하다는 점 입니다.
function abcd1 (){
this.number = 1234;
}
var abcd2 = ()=>{
this.number = 1234;
}
위 코드에서 this.number를 통하여 데이터를 넣는 모습입니다.
abcd1함수는 내부의 number라는 변수에 1234값을 넣었지만, abcd2 화살표 함수는 외부에 참조되는 데이터에 대해서 값을 넣었습니다.
위 내용을 조금 더 쉽게 살펴보기위해 코드를 변경하였습니다.
function abcd1 (){
this.number = 1234;
}
var abcd2 = ()=>{
this.number = 1234;
}
var abcd = new abcd1();
console.log(abcd.number);
var abcd_ = new abcd2(); //에러
위 사진처럼 new를 통해서 함수를 생성하려 할 때 에러가 발생하는 것을 볼 수 있습니다.
이처럼 화살표 함수는 this를 통해서 본인 소유의 데이터를 가질 수 없습니다.
또한 호출은(callable) 가능하지만 생성은(constructable) 불가능 합니다.
이상으로 일반 함수와 화살표 함수와의 차이를 살펴 보았습니다.
단순하게 호출 및 간략한 코딩을 위해서는 화살표 함수가 좋지만 그렇지 않는 경우에는 일반함수를 사용하여 데이터 누락이나 생성과 관련된 오류를 피해야 하겠습니다!
* 아..물론 익스플로러에서 화살표 함수는 동작하지 않으므로..익스플로러를 지원해야하면 사용하면 안되겠습니다..ㅠ
반응형
'Javascript > [기초] Javascript' 카테고리의 다른 글
간단하게 정리한 JSPDF 사용법(Javascript pdf) (17) | 2020.10.22 |
---|---|
Javascript 댓글 기능 제작(자바스크립트 댓글, Javascript comment) (0) | 2020.09.09 |
Jquery when 사용(Jquery Promise, 순서있는 ajax) (0) | 2020.04.01 |
Javascript 화면 캡쳐, Javascript screen shot, Javascript screen capture [html2canvas] (0) | 2020.01.22 |
Javascript json array loop, for (자바스크립트 json 배열 반복문) Object for Object loop (0) | 2020.01.21 |
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)
댓글