SeSac (2021-08 ~ 2021-12)/JS

ch12 deep dive 함수

배워도끝이없네 2021. 8. 26. 22:04

자바스크립트는 함수형 언어이다.

함수를 확실히 알고 넘어가자!

함수는 처음 평가될때 속까지 평가되진 않는다. (속의 평가는 실행단계에서 된다)

함수를 사용하는 이유는 중복코드를 없애고 함수의 특성을 이용하면 소스의 가독성이 좋아지기 때문이다.

리터럴은 값을 생성할 수 있는 앤데 함수 리턴이없으면 리터럴?

 

선언은 위로 올라간다(호이스팅된다. 값은 호이스팅되지 않는다.)

선언문으로 정의한 함수와 표현식으로 정의한 함수의 생성시점은 다르다

선언문으로 정의한것은 호이스팅이 일어나고 표현식으로 정의한 함수는 호이스팅이 일어나지 않는다.

 

호이스팅의 종류는? 변수 호이스팅, 함수 호이스팅이 있다.

함수는 함수 선언문과 함수 표현식이 있다.

함수표현식은 변수 호이스팅에 속한다.

 

a=1; function f1(){...}

const f2=function(){...}

 

함수형언어는 컴파일대신 평가를 하는것이다(함수형언어에서 컴파일이 평가라고 생각하면댐)

평가의 가장 큰 의미는 메모리 확보이다.

평가하는 단계에서 실행컨텍스트에서 메모리를 확보한다.

평가단계에서 최소한의 syntax에러등을 잡는다.

 

const를 쓸 수 있으면 무조건 써라 (처음 평가할떄 메모리를 고정적으로 잡아둘 수 있기 때문)

function은 나중에 바뀌거나 사용이 안되면 평가할때 타격이 크기 때문에 함수 바디까지 평가하지 않는다.

 

static은 다른 메모리공간에 잡힌다.(static 영역 혹은 cache영역이라고도 한다.)

표현식은 힙영역에 잡히고 스테틱은 스테틱 영역에 잡힌다.

 

정확히 말하면 GC가 끝난 후의 변수에 접근하는것이 클로저이다.

클로저를 보면 대부분 IIFE(즉시실행함수) 가 있다.

 

화살표 함수는 왜 호이스팅이?

 

reflection =>실행하기전까지 코드는 문자이다. 하지만 실행하고 나면 객체가 된다.

객체를 문자로 봐서 문자로 객체의 내부를 찾아나가거나 하는것을 리플렉션이라고 한다

객체를 문자로 인식하고 문자를 객체로 인식하는것.. (거울처럼)

 

내장함수의 작동은 자바스크립트 엔진을 만드는 회사의 로직대로 돌아간다

 

비동기언어에서는 콜백함수가 중요하다!!!

 

'SeSac (2021-08 ~ 2021-12) > JS' 카테고리의 다른 글

13~17 deep dive  (0) 2021.08.31
자바스크립트의 역사  (0) 2021.08.28
ch10~11 deep dive  (0) 2021.08.24
Ch. 7~9 deep dive JS  (0) 2021.08.19
deep dive ch1~6  (0) 2021.08.17