1. 함수 리터럴
- 4가지 구성요소를 가진다.
1) function키워드 2) 함수명(선택사항) 3) 매개변수 리스트 4) 함수 몸체(함수 호출시 실행되는 부분)
function add(x,y){ return x+y; }
2. 함수 선언문 방식으로 함수 생성하기
- 함수명 정의 필수.
3. 함수 표현식 방식으로 함수 생성하기
1) 함수 리터럴로 하나의 함수를 만들고,
2) 생성된 함수를 변수에 할당하여 함수를 생성
var add = function(x,y){ return x+y; }
4. 함수 호이스팅
- 함수 안에 있는 변수 선언과 함수 선언을 함수 유효 범위 최상단으로 끌어 올리는 것
- 함수 선언문은 호이스팅에 영향을 받지만, 함수 표현식은 영향을 받지 않는다.
- 함수 선언문은 호이스팅에 의해 브라우저가 자바스크립트를 해석할 때 코드 상단으로 끌어올려진다.
- 특히 var로 선언한 변수의 경우 스코프가 {}이 아닌 function이므로 변수가 {} 밖에서도 변경되거나 덮어 써진다. 이로 인해 ES6이후 문법에서는 var보다 let, const를 사용해서 보다 명확한 코드를 만드는 것을 권장한다.
호이스팅 우선순위
- var변수 선언이 함수 선언보다 위로 끌어올려진다.
- 값이 할당되지 않은 변수의 경우, 함수선언문이 변수를 덮어쓴다.
- 값이 할당된 변수의 경우, 변수가 함수선언문을 덮어쓴다.
Reference
'TIL > Javascript' 카테고리의 다른 글
React.js | TypeError: Cannot read property ‘replace’ of undefined (0) | 2021.01.15 |
---|---|
[33 Concepts JS] Call Stack (0) | 2020.12.11 |
[모던자바스크립트 deep dive] 디버깅, code runner (2) | 2020.12.11 |
JS-이벤트 루프, 호이스팅, 클로저 (0) | 2020.12.10 |
[Javascript] 함수도 객체다 (0) | 2020.12.03 |
댓글