Arrow Function

김민재·2021년 7월 14일
0

Gotcha JavaScript!

목록 보기
14/45

Function
-프로그램을 구성하는 기조벉거인 빌딩 블록
-서브 프로그램이라도 불리고 여러번 재사용가능하다.
-한가지 태스크가 값을 계산하기 위해서 사용된다.

1.function declaration ?
-Function 함수 이름 (파라미터1, 파라미터 2_ {바디 ... 리턴;}
-하나의 함수는 한가지 일만 하도록 만들어야한다.
-함수 이름을 정할땐 커맨드 형태, 동사형태로이름을 지정, 세분화하여 한가지 함수 명 지정
-자바에서 함수는 객체이다!

2.파마리터?
원시형 파라미터들은 메모리에 value가 저장되어서 value가 전달된다.
객체형 파라미터들은 레퍼런스가 저장되어 전달된다.
따라서 함수 안에서 오브젝트의 값을 변경하면 변경된 사항이 메모리에 적용되어 변경된 사항을 확인할 수 있다.

3.default 파라미터?
사용자가 파라미터 값을 지정하지 않았을 때 넣으면 값이 대체되어서 사용되어진다.

4.rest 파라미터?
... 을 작성하면 배열형태로 파라미터에 전달된다.
배열 출력시에는 for of를 활용하면 보다 간단하다. 혹은 배열에서 forEach 함수형 언어를 이용해서 출력해도 좋다.

5.local scope
밖에서는 안이 보이지 않아 접근할 수 없고 안에서만 밖을 볼 수 있어 접근가능하다.
함수의 블록이나 이프의 블록안에서 변수를 선언하면 지역변수로 지역적이기에 안에서만 접근이 가능하다.
같은 원리로 중첩된 함수에서 자식의 함수가 부모함수에 정의된 변수들에 접근을 할 수 있다.

  1. return
    함수에서 파라미터로 값들을 전달받아서 계산된 값을 리턴할 수 있다.

  2. early return, early exit
    블록 안에 로직을 많이 작성하면 가독성이 떨어지기 때문에
    if else를 번갈아가면서 쓰기 보단 조건이 맞지 않을 경우 빨리 return하여 함수를 종료하고 조건이 맞는 경우에만 필요한 로직들을 작성하는 것이 좋다.
    코드 작성시 조건이 맞지 않는 경우, 값이 undefined경우, 값이 -1인 경우 빨리 return하고
    나머지 필요한 로직을 뒤에 적는 것이 더 보기좋다.

8.function expression
first Function class? Function이 변수와 마찬가지로 변수에 할당되기도 하며 파라미터로 전달되고 하며 리턴값으로도 리턴이 된다는 것이다.
이러한 것들이 가능한 것이 function expression이다
함수를 이름을 짓지않고 바로 변수에 할당하면 익명함수로서 변수에 함수를 호출하듯이 바로 사용할 수 도 있다.

function declaration 와 function expression가장 큰 차이점?
function expression은 할당된 다음부터 호출이 가능한 반면 function declaration 은 hoisting이 가능하다. 함수가 선언되기, 정의하기 이전에 호출되어도 호출 가능하다.

  1. call back 함수

함수의 파라미터 안에 함수가 들어가있어 상황이 맞을때 전달될 함수를 부르는 것을
콜백함수라고한다.
아래의 경우 두가지의 콜백 함수가 파라미터로 전달되어서 정답인 경우 printyes 콜백함수를 아닌 경우 printno 콜백함수를 호출한다.
보통 익명함수가 아닌 네임드 함수는 디버깅을 할때 디벙기의 stack trace에 함수의 이름이 나오도록 할 때 쓴다.
함수 안에서 자신 자기 자신을 함수로 다시 호출 할 때를 recursion이라하는데 정말 필요시에만 쓰도록 한다. 이런 경우 함수를 무한대로 호출하면 call stack이 차서 오류가 생길 수 도있다.

  1. arrow function
    항상 이름없는 익명함수로 기본의 함수 선언 형식을 보다 간단하게 바꾸어 표현한 것이다
    return또한 적어주지 않아도 된다. 더 다양한 일들을 해야하면 리턴과 블록을 넣어서 처리할 수 도 있다.

11.IIFE:Immediately Invoked Function Expression
함수를 선언하면 따로 호출하지 않고 선언함과 동시에 바로 호출하기 위해 함수 자체를 ()로 묶어주고 함수를 호출하듯이 ();를 붙여주면 바로 호출할 수가 있다.

profile
자기 신뢰의 힘을 믿고 실천하는 개발자가 되고자합니다.

0개의 댓글