결론 : 이름, this, argument 가 없다!
1. 이름 -> 화살표 함수는 기명함수가 없다! 항상 익명함
수!
2. this -> 앞선 this포스팅에 적었듯이 this가 화살표 함수에서 쓰이면 부모를 가리킨다!
3. arguments -> arguments속성이 없다!
arguments는 값들을 배열 형태 담고있는데 화살표 함수 사용시 정의되지않았다고 에러를 뿜는다.
기능 유의 :
함수 본문에 return문만 존재할 경우, return 생략 가능
함수 body에 return문만 존재할 때 return을 생략하고 쓸 수 있다. 이때 중괄호({})도 생략해서 써야 정상 작동된다.
// 정상 작동
function solution(numbers) {
return 45 - numbers.reduce( (acc,cur) => {return acc + cur} )
}
// 정상 작동
function solution(numbers) {
return 45 - numbers.reduce( (acc,cur) => acc + cur )
}
// 비정상 작동
function solution(numbers) {
return 45 - numbers.reduce( (acc,cur) => {acc + cur} )
}
만약 초기값이 제공되지 않는다면 accumulator는 배열의 첫번째 값이 자동으로 들어가게된다.
그렇게 되면 ,1번 인덱스부터 reducer를 거친다.
그리고 reducer의 acc는 acc+cur값이 들어가는 게 아니라, return값이 들어간다.
대부분 예제를 return acc+cur로들어서 착각했는데 return값이 들어간다.
[0, 1, 2, 3, 4].reduce(function(accumulator, currentValue, currentIndex, array) {
console.log(accumulator);
return 1
}, 0); // 0 1 1 1 1
'언어 > Javascript' 카테고리의 다른 글
closure (0) | 2022.08.06 |
---|---|
Array Destructing, Object Destructing (0) | 2022.08.04 |
IIFE 즉시실행함수 와닿는 특징. (0) | 2022.08.02 |
script type = "module" (0) | 2022.08.01 |
비동기 : 마이크로태스크 큐 메크로테스크 큐 (0) | 2022.07.29 |