자바스크립트의 함수에 대해서 알아보자.
일급 함수라는 뜻
MDN :: "함수가 다른 변수처럼 취급되어지면, 그 언어는 일급함수를 가지고 있다."
//1급 함수이기에 가능한 것들
let b = 10;
//1급 함수이기에 매개변수에 함수를 선언하는 것이 가능하다
const add10 = function (a) {
return 10 + b;
};
//1급 함수이기에 함수를 인자로 전달하는 것이 가능하다
function apply(arr, op) {
return arr.map(op);
}
apply([1,2,3], add10);
//1급 함수이기에 함수안에서 또다른 함수를 반환하는 것이 가능하다
function makeAdd(v1){
return function(v2){
return v1 + v2;
};
}
//반환되어진 함수를 이렇게 사용할 수가 있다
const add3 = makeAdd(3);
console.log(add3(10));
const add7 = makeAdd(7);
console.log(add7(10));
function f1() {
const v1 = 123;
console.log(v1);
};
const v2 = 456;
function f2() {
f1();
console.log(v2);
}
f2();
call stack :: 함수의 실행정보를 저장한다
javascript에서 이러한 call stack에 담기는 정보를 execution context라고 부른다
위의 function함수들을 감싸고있는 큰 함수가 하나 있고, 그것이 실행되어질 때 global execution context가 실행된다고 볼 수 있다
내용이 겁나 길지만 그냥 콜스택에서 하나씩 담아두고 하나씩 꺼내온다는 걸 세세하게 쓴 내용일 뿐이니 그 정도만 이해해라. 근데 e.c , l.e의 성질은 꼭 알고가자