TIL - Function

jake·2022년 1월 10일
0

TIL

목록 보기
29/54
post-thumbnail

Function

  • 재사용 가능하고, 어떤 task나 값을 계산 하기위해 사용
  • JS는 절차지향적 언어, sub-program이라고 부른다.
  • function은 파라미터를 받아서 값을 짠 하고 나타내주는 것!
  • API(Applycation Programming interface)를 쓸 때 함수의 이름을 보고 알 수 있다.
  1. Function declaration
  • function(pram1){ body... return;} 형태로 만들거나 arrow function으로 쓴다.
  • 하나의 함수에 한가지의 일만 하도록 만들어야한다.
  • 함수의 이름은 동사형태로 이름을 지정해야한다. (doSomething, command, verb)
  • function은 object이다. 때문에 변수에 할당할 수 있고, 함수의 파라미터로 전달 할 수 있고, 함수를 리턴할 수도 있게 된다.
  • 자바스크립트는 런타임에서 변수에 할당된 값에 따라서 타입이 변하기 때문에 함수를 보더라도 파라미터에 어떠한 타입의 데이터를 전달해야하는지 명확하지 않다. 함수에 숫자를 넣더라도 문자로 바뀌어서 출력이되지만, 다른 함수에서 타입이 중요할 경우 난해하기 때문에 타입 스크립트를 쓴다!
    규모있는 프로젝트나, 협업할때, 라이브러리 형태로 API를 제공해야할 때 타입스크립트를 쓰는게 좋다! 왜? 인터페이스만 봐도 어떤 타입의 파라미터를 전달해야하는지 리턴 값을 어떤 타입인지 명확하게 알 수 있으니까
  1. Parameters

함수에 파라미터를 전달할 때
premitive type은 메모리에 value가 그대로 저장되어있기 때문에 value가 전달되고
Object는 메모리에 reference가 저장되기 때문에 reference가 전달이 된다.
(정확히는 Object를 가르키고있는 reference가 전달 된다.)

  1. Default Parameters (added in ES6)

함수에 Parameter가 전달되지 않았을 경우 default으로 전달되게 하려면 =을 써서 default값을 설정 해줘야한다.

  1. Rest parameters(added in ES6)

...args을 쓰면 전달 받은 파라미터를 배열 형태로 전달하게 된다.(args말고 다른이름도 됨). 배열로 전달받은 파라미터를 for, for of, forEach등 다양한 형태로 반복문을 돌려줄 수 있다.

  1. Local scope

클로저나 렉시컬 환경은 scope를 자세히 설명해주는 것이고(나중에 심화공부할 때 알아보자.)
scope는 밖에서는 안이 보이지 않고 안에서만 밖을 볼 수 있다. 이말을 이해하자. 즉, 밖에서 선언된 변수들을 블록안에서 사용할 수 있고 블록에 선언된 변수는 밖에서 사용할 수 없다.

  1. Return a value

함수는 return을 뱉을 수 있다. return이 안써있을때는 return undefined가 생략 된 것이다.

  1. Early return, Early exit

조건에 맞지 않는 것을 먼저 판단하여 함수를 실행할지 종료(return)할지 결정해주는 것이 좋다.


  1. Function Expression vs Function declaration
  • 함수표현식(Function Expression)은 함수를 선언 후에 호출이 되지만, 선언식(Function declaration)은 함수를 선언전에 호출이 가능하다. 즉, 호이스팅이 된다.
  1. Call back function using function expression
  • 콜백함수는 파라미터로 함수를 전달하는 것이다.
  • 함수표현식에서 변수로 선언 후 함수에 이름을 붙이지 않으면 익명함수이다.
  • 함수표현식에서 변수로 선언 후에 함수에 이름을 붙이면 네임드 함수이다. 이름을 붙여주는 이유는 디버깅이나 자기자신을 실행 시킬때 사용한다한다.
  1. Arrow function

너무 편한 arrow function ( ) => { }
IIFE는 함수 바로 실행하는 것이란다 참고만 해놓자.

profile
열린 마음의 개발자가 되려합니다

0개의 댓글