Function
- Function declaration
- Parameters
함수에 파라미터를 전달할 때
premitive type은 메모리에 value가 그대로 저장되어있기 때문에 value가 전달되고
Object는 메모리에 reference가 저장되기 때문에 reference가 전달이 된다.
(정확히는 Object를 가르키고있는 reference가 전달 된다.)
- Default Parameters (added in ES6)
함수에 Parameter가 전달되지 않았을 경우 default으로 전달되게 하려면 =을 써서 default값을 설정 해줘야한다.
- Rest parameters(added in ES6)
...args을 쓰면 전달 받은 파라미터를 배열 형태로 전달하게 된다.(args말고 다른이름도 됨). 배열로 전달받은 파라미터를 for, for of, forEach등 다양한 형태로 반복문을 돌려줄 수 있다.
- Local scope
클로저나 렉시컬 환경은 scope를 자세히 설명해주는 것이고(나중에 심화공부할 때 알아보자.)
scope는 밖에서는 안이 보이지 않고 안에서만 밖을 볼 수 있다. 이말을 이해하자. 즉, 밖에서 선언된 변수들을 블록안에서 사용할 수 있고 블록에 선언된 변수는 밖에서 사용할 수 없다.
- Return a value
함수는 return을 뱉을 수 있다. return이 안써있을때는 return undefined가 생략 된 것이다.
- Early return, Early exit
조건에 맞지 않는 것을 먼저 판단하여 함수를 실행할지 종료(return)할지 결정해주는 것이 좋다.
- Function Expression vs Function declaration
- Call back function using function expression
- Arrow function
너무 편한 arrow function ( ) => { }
IIFE는 함수 바로 실행하는 것이란다 참고만 해놓자.