[javascript] arrow function 질문
조회수 512회
안녕하세요. arrow function을 공부하고 있는데 질문이 있습니다.
const inventors = [
{ first: 'Albert', last: 'Einstein', year: 1879, passed: 1955 },
{ first: 'Isaac', last: 'Newton', year: 1643, passed: 1727 },
{ first: 'Galileo', last: 'Galilei', year: 1564, passed: 1642 },
{ first: 'Marie', last: 'Curie', year: 1867, passed: 1934 },
{ first: 'Johannes', last: 'Kepler', year: 1571, passed: 1630 },
{ first: 'Nicolaus', last: 'Copernicus', year: 1473, passed: 1543 },
{ first: 'Max', last: 'Planck', year: 1858, passed: 1947 },
{ first: 'Katherine', last: 'Blodgett', year: 1898, passed: 1979 },
{ first: 'Ada', last: 'Lovelace', year: 1815, passed: 1852 },
{ first: 'Sarah E.', last: 'Goode', year: 1855, passed: 1905 },
{ first: 'Lise', last: 'Meitner', year: 1878, passed: 1968 },
{ first: 'Hanna', last: 'Hammarström', year: 1829, passed: 1909 }
];
// Array.prototype.filter()
// 1. Filter the list of inventors for those who were born in the 1500's
const afterInventors = inventors.filter(function(element){
if(element.year > 1500){
return element
}
});
위의 filter 함수를 arrow function으로 고쳐보았는데요.
const aI = inventors.filter(element => {if(element.year > 1500) return element});
그런데 arrow function에서 한줄이면 return 을 생략할 수 있다고 하여 return 을 생략하여 만들어 보려고 했는데
const aI2 = inventors.filter(element => element.year > 1500);
위와 같이 선언해 생성된 aI2가 같은 값을 담고 있더라구요. 그런데 ai2가 잘 이해가 가지않습니다. arrow function에서는 조건문도 생략이 가능한가요? 그리고 조건문을 생략하는 경우 무엇을 리턴해주는 것인가요...
aI2 처럼 생략해서 사용하고 싶은데... al 처럼 밖에 사용을 못하겠네요.
질문 읽어주셔서 감사합니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
2 답변
-
부끄러워서 지울까 하다가ㅠㅠ 자답 남깁니다.
filter 메소드는 Boolean타입을 리턴해야합니다. 따라서..
const aI = inventors.filter(element => {if(element.year > 1500) return element});
와 같이 사용해도 결과는 맞겠지만const aI = inventors.filter(element => {if(element.year > 1500) return Boolean});
을 사용하는것이 맞는 표현입니다.filter 의 경우 true , false를 리턴하기 때문에
const aI2 = inventors.filter(element => element.year > 1500);
와 같이 작성이 가능합니다.따라서 true, false 를 반환하는 filter 메소드는 arrow function을 사용하면 엄청 편하게 함수 작성이 가능합니다.
부끄럽습니다 ㅠ JS 공부 화이팅 ...
-
(•́ ✖ •̀)
알 수 없는 사용자
- 이제보니 아예 사용을 잘못하신 것이었네요... 허허 화이팅! 알 수 없는 사용자 2019.2.18 19:14
- neurioWhAI님 답변 감사합니다 ㅎㅎ.... 저는 과연 개발자가 될 수 있을까요 ... ㅜㅜ 흐.. 알 수 없는 사용자 2019.2.18 20:31
- 당연히 가능합니다. 혼자 해결하신 것만 해도 상위권에 든다고 뿌듯해하셔도 됩니다 ㅎㅎ 또 언어 자체도 타입에 너무 느슨한 것이 이런 실수를 만드는 원인 중 하나이니 너무 본인 탓 하실 필욘 없어요. 알 수 없는 사용자 2019.2.18 21:17
-
-
=>
는 조건문이 아니라 연산자이며 그 중에서도 비교 연산자 분류에 속합니다.
비교 연산자는 두 값을 받아 비교한 후 논리 값을 반환하기 때문에aI2
와 같이 사용할 수 있는겁니다.
조건문if (condition)
은 단순히condition
에 사용된 표현식의 결과를 이용하여 분기하는 것이지if
가 비교 연산을 수행하는 것은 아닙니다.-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력