2022. 10. 25. 12:58ㆍjs
Ecmascript 에서 매개변수의 개수에 대해서는 명시적으로 제한되고 있지 않다.
하지만. 자바스크립트의 경우 함수를 호출 할 때 매개변수의 개수를 맞추지 않더라도
오류를 뱉지 않는다. 따라서 이에 대해서는 각자가 조건 처리를 통해서 에러를 처리해야 한다.
이말은 결국, 사용자가 어떤 입력을 할지에 대해서, 어떻게 대처를 할지를 개발자가 미리 정해야 한다는것 이라고
볼 수 있다. 따라서 매개변수의 개수는 정해지지 않았지만. 스스로가 처리 할 수 있는 개수가 좋을것 같다.
이는 결국 매개변수가 없는것이 가장 이상적이지 않을까 하는 생각을 할 수 있다.
책에서는 이상적인 함수는 한가지 일만 해야하며 가급적 작게 만ㄷ르어야 한다 라고 한다.
이때 매개변수가 많아서 이에 의해 다른 행위를 해야 한다면 이는 분기를 하는게 맞다고 해석이 되었다.
function testFunc(primt, obj) {
primt++;
obj.name = "hi";
}
와 같은 함수에서 primt 의 값을 전달하고 obj 를 전달 한다고 가정 하자 .
호출에 사용된 매개변수가 const 라고 하였을때에
함수 내부에서 사용된 primt 는 외부의 매개변수와 다른 것을 가진다
이말은 결국 함수에서 사용되는 매개변수에 값이나 참조하고 있는 것을 이동 시킨다음.
사용한다는 것을 의미 함을 알 수 있다.
.
이와 같은 결과 를 얻을 수 있음을 알 수 있다.
자바스크립트의 함수에서 나는 크게 3가지 정도를 알아두는것이 필요 하다고 생각한다.
그중 첫번 째로
즉시 실행 함수 라는 것을 알아보자 .
(function (){}();) 와 같은 형태로 선언한다.
이와 같은 형태의 함수들은 선언과 동시에 실행을 해버리는 함수로 다시 이 함수를 호출 하지 않는다.
그래서
const res = (function(){}());
와 같은 방식으로 미리 결과를 저장해두고 사용한다.
2번째 함수 내부에서 함수를 선언하는 것
이는 cpp 에서 namspace 를 떠올리면 어 ? 하는 생각이 떠오를 정도 이다.
한 블록에서 새로운 블록의 함수를 선언하고 사용 하는 방식으로
내부에서 만 사용할 함수를 정의해서 사용하는 것이라고 보면 편하다.
3번째 콜백함수
함수에서 다른 함수를 호출해서 사용하는 방식을 뜻하고
이는 c.언어와 같은 언어에서 함수 포인터를 사용하여 함수에서 전달 받은 함수를 사용하거나 하는
방식을 경험 할 수 있는것과 같은 내용이다.
function (val, p_func){
p_func(val);
}
과 같은 방식으로 사용 할 수 있다. 이는 중첩함수와 비슷하나 다른 스코프의 함수를 사용 할 수 있다는 점에서
조금은 다르지않을 까 생각한다.
'js' 카테고리의 다른 글
돔, v8, node js 에서 간략히 공부한 내용. (0) | 2022.10.26 |
---|---|
js deep dive [13 scope] (0) | 2022.10.25 |
js deep dive [12 함수 part 01] (0) | 2022.10.24 |
js deep dive [11장 정리 원시 값과 객체의 비교] (0) | 2022.10.24 |
js Deep dive [10장 객체.] (2) | 2022.10.23 |