[드림코딩 JS 마스터리] 함수

Jessie H·2022년 5월 17일
0
post-thumbnail

png created by here

function

어떤 한 가지 일을 반복해서 실행할 때 효율적으로 실행하기 위해 실행할 식을 함수로 만든다.



Memory

  • 함수 선언 시 함수가 메모리에 담김
  • 함수 이름을 어떤 변수에 재할당 시, 변수에는 함수가 담긴 메모리 주소를 재할당함
  • 따라서 변수 이름으로 재할당한 함수를 똑같이 쓸 수 있게 된다
function plushi(name){
	return 'hi, '+ name;
} 

const greeting = plushi;

console.log(greeting('Jenny'));
console.log(plushi('Jenny'));

//hi, Jenny
//hi, Jenny


return

  • 함수의 {}부분에 return 을 따로 쓰지 않으면 자동으로 undefined가 반환됨
function nothg(a) {}//return undefined; 생략
const blahblah = nothg(0);
console.log(blahblah);
//undefined
  • 함수 중간에 return을 넣으면 함수가 종료됨
  • if문과 return을 활용하여 조건을 만족하지 않을 때 함수 실행을 일찍 종료시킬 수 있다.
function addone(a){
	if(a > 10){
    return;
    }
    a += 1;
    console.log(a)
} 
addone(1);//2
addone(11);//실행되지 않아 결과값 없음


parameter

  • parameter의 기본값은 undefined
  • parameter의 정보는 함수 내에서 접근 가능한 argument객체에 저장됨
function ex(a,b){
	console.log(arguments);
    return a*b;
}
ex(3,4)
//[Arguments] { '0': 3, '1': 4, '2': 6, '3': 7 }
//'0'= a, '1' = b

parameter가 arguments에 저장되므로 parameter a,b를arguments[0], arguments[1]로도 찾을 수 있다



Rest parameter (...parameter)

parameter갯수가 정해지지 않았을 때 쓰는 형식으로 출력하면 배열의 형태로 파라미터를 반환

function print(...num){
	console.log(num);
}
print(1,2,3,4,5)
//[1,2,3,4,5]


expression

함수 선언문 function a() {}
함수 표현식 const a = function(){}

  • 함수 표현식으로 함수를 변수로 선언할 때 함수의 이름을 설정해도 외부에서 해당 함수 이름으로 불러올 수 없기 때문에 함수 이름은 설정 하나마나이다.
const a = function red(a){
	console.log(a + ' is red');
}
red(apple);
//red is not defined로 오류 발생

화살표 함수

const name = ()=>{};

  • {}에서 값만 반환하는 경우 {}와 return도 생략가능
function multiply(a, b){
	return a * b;
}

위의 함수는 아래처럼 나타낼 수 있다.
다만 function(){}를 100% 대체할 수 있는 것은 아니다

const multiplay = (a,b) => a * b
console.log(multiply(3,4));
//12


callback

  • 일차함수: 일반 객체처럼 모든 연산이 가능한 함수
    • parameter 전달
    • 반환값
    • 할당 명령문(a = add())
    • 비교(==, === 등)
  • 고차함수
    • argument(함수를 호출할 때 불러오는 값)로 받아올 수 있는 함수,
      외부로부터 주어진 함수= 콜백함수

    • 함수를 반환하는 함수

      const is = function(a){
      	console.log(a + '입니다');
      }
      
      const nownumber = function(b){
        console.log('지금 숫자 ' + b);
      }
      
      function numplay(j, action){
      	let mynum = action(j);
       return mynum;
      }
      
      numplay(3, is);//3입니다
      numplay(3, nownumber);// 지금 숫자 3
      


immutable

외부로부터 받는 인자를 함수 내부에서 재할당하면 오류날 수 있다.
(특히 object)

fumncion numbers(a){
	console.log(a);}
    
const myproduct = {name: 'xexymix leggings'};
numbers(myproduct);
console.log(myproduct);
function leggings(leggings) {
  leggings.name = "xexymix leggings";
  console.log(leggings);
}
const temple = { name: "temple" };
leggings(temple);
//{ name: 'xexymix leggings' }
function leggings(leggings) {
  console.log(leggings);
}
leggings(temple);
//{ name: 'temple' }
profile
코딩 공부 기록장

0개의 댓글