콜백 함수

서민수·2023년 8월 27일
0

자바스크립트

목록 보기
17/25

콜백 함수

  • 콜백 함수(Callback Function)란 다른 함수의 매개변수로 전달되어 수행되어지는 함수
  • 고차 함수(Higher-order-Function)란 매개변수를 통해 함수를 받아 호출하는 함수

콜백 함수 예제

function add(x,y) {
 return x + y;
}

function sub(x,y) {
 return x - y;
}

function mul(x,y) {
 return x * y;
}

function div(x,y) {
 return x / y;
}

function calculator(callback, x, y){
 return callback(x,y);
}

console.log(calculator(add, 7, 3)); // output: 10
console.log(calculator(sub, 7, 3)); // output: 4
console.log(calculator(mul, 7, 3)); // output: 21
console.log(calculator(div, 7, 3)); // output: 2.3333333333335

call by *

call by value

  • 값에 의한 복사로 함수 내에서 매개 변수 값을 변경 시켜도 영향이 미치지 않음
  • 원시 타입(primitive type)을 매개 변수로 넘겼을 때 발생
let a = 1; // a는 1이다 선언
let add = function (b) { b = b + 1; }; // add(1) 매개변수 b를 받을 때 b의자리에 a를 넣었을때 1이다. 하여 값에 대한 복사로 b = 2이다.
add(a); // caller
console.log(a); //  b는 2이지만 a는 1이다 a와 b는 각각 다른 메모리 

call by reference

  • 주소에 대한 복사로 함수 내에서 매개 변수 내 값을 변경시키면 원본 데이터에도 영향을 받음
  • 객체 타입(object type)을 매개 변수로 넘겼을 때 발생
var a = { v : 1}; // 객체를 선언
var add = function (b) { b.v = b.v + 1; }; // 동일하게 add 함수를 호출하고 b라는곳에 a를 주소값을 복사하게 되는데 함수내에서 b를 건들게 된다.
// 2라는 값을 b에 복사시켜줬고 주소에 대한 참조값을 복사하여 객체에 대한 영향을 끼쳤기 때문에 2로 출력이 된다.
add(a); caller
console.log(a.v); // output: 2
profile
안녕하세요

0개의 댓글