2020. 4. 22. 23:00ㆍBACKEND/Node
안녕하세요 〰️
오늘 포스팅의 주제는 'Arrow Function, 화살표 함수' 입니다.
SOPT 서버 세미나 도중에 자세히 알려드리고 싶은데, 시간이 없어서 자세히 못알려드린 게 조금 마음에 걸리더라구요...
짧고 간단한 내용이니 가볍게 보셔도 좋을 것 같아요 〰️
이제 많이 사용할거니까 종종 보시면서 익숙해지시는게 좋을 것 같아요 😆
순서는 다음과 같습니다.
1. 화살표 함수❓
2. 화살표 함수 선언
3. 화살표 함수 호출
4. 화살표 함수 주의
첫 번째, 화살표 함수?
화살표 함수는 간단한 표기법의 함수 정의 방식입니다.
function에 비해 표현이 간단하고, 항상 익명이에요.
깔끔하고 간단하지만, 항상 익명이며 this, arguments 등이 자동으로 바인딩되지 않기 때문에 신경써서 사용해주시길 바랍니다.
두 번째, 화살표 함수 선언
( 매개변수 ) => { ... }
위와 같은 모양이 바로 화살표 함수입니다.
말 그대로 매개변수와 로직 사이에 '화살표'를 사용해 함수를 표시합니다.
화살표 함수는 괄호를 생략하여 더욱 더 깔끔하게 사용할 수 있습니다.
1. 매개변수가 한 개일 때, 매개 변수의 괄호를 생략
2. 한 줄만으로 바디를 표현할 수 있다면 중괄호를 생략 -> 암묵적으로 return ❗️
// 생략 전의 모습
(param) => { return console.log(param) }
// 1. 매개변수가 한 개일 때 - 매개변수의 괄호 생략 가능
param => { ... }
// 2. single line block 일 때 - 블록의 중괄호 생략 가능
param => console.log(param)
3. 객체 리터럴을 반환할 때에는 아래와 같이 괄호를 감싸서 반환해주세요 〰️
person => ({name: 'gngsn'})
4. 매개변수의 기본값을 지정할 수 있습니다.
(name = 'gngsn', age) => console.log(`이름은 ${name}, 나이는 ${age}입니다〰️)
5. Spread 문법을 사용할 수 있습니다.
(...args) => console.log(args)
여기서, 잠깐 〰️ Spread 문법이 무엇일까요 ~.~
... 을 사용하여 배열과 같은 연속적인 데이터가 있는 구조의 값들을 참조합니다.
console.log(...[1,2,3]) // output: 1, 2, 3
console.log(...'Hello') // output: Hello
위와 같이 구성요소를 하나씩 접근하여 가지고 옵니다. 배열뿐만 아니라, Map이나 Set, String에서 사용할 수 있는데요.
이렇게 Spread 문법은 이터러블의 특징을 가진 대상에게만 사용할 수 있습니다.
일반 객체는 Spread 문법의 대상이 될 수 없기 때문에 주의하세요 〰️
이터러블에 대한 내용은 설명이 굉장히 잘 된 곳으로 링크를 걸어두었으니 참고 바랍니다 ❗️
세 번째, 화살표 함수의 호출
화살표 함수는 익명함수입니다.
그렇기 때문에 항상 함수 표현식으로 변수로 선언하거나, 콜백함수의 형식으로 사용해주셔야 해요.
// 변수 선언
const logging = (x) => console.log(x)
logging('Hello world')
// callback
const info = ['name', 'age', 'address']
info.map((data) => {
console.log(data)
})
위와 같이 사용해주시면 됩니다.
네 번째, 화살표 함수 주의
자바스크립트의 일반 함수가 this, arguments 등의 객체에 접근할 수 있죠.
하지만 화살표 함수는 자동으로 바인딩이 되지 않기 때문에 화살표 함수 내부에서 위의 요소로 접근할 수가 없습니다.
또, 화살표 함수는 생성자 함수로 사용할 수 없습니다.
const func = () => {} // undefined
new func() // Error
이상으로 화살표 함수에 대해 알아보았습니다 〰️
생각보다 별거 없죠..❓
별 거 없어도, 알고 있어야 사용할 때 당황하지 않는다는 점 ~.~
그럼, 오늘 포스팅은 이렇게 마무리하겠습니다 😆
'BACKEND > Node' 카테고리의 다른 글
Express, 어렵지 않게 시작하기 (3) | 2020.04.26 |
---|---|
Express + React, 간단한 프로젝트 만들기 3 (6) | 2020.04.23 |
Express + React, 간단한 프로젝트 만들기 2 (1) | 2020.04.17 |
Express + React, 간단한 프로젝트 만들기 1 (0) | 2020.04.12 |
Express + MongoDB, 간단한 프로젝트 만들기 (0) | 2020.03.16 |
Backend Software Engineer
𝐒𝐮𝐧 · 𝙂𝙮𝙚𝙤𝙣𝙜𝙨𝙪𝙣 𝙋𝙖𝙧𝙠