마스터즈 웹 FE 프리스쿨 | 자바스크립트 함수

Autumn·2020년 12월 30일
0

코드스쿼드

목록 보기
2/2
post-thumbnail

Expressions vs Statements

  • Expressions

    value를 return하는 것. 자바스크립트는 expression을 value로 대체하고 계속 진행한다.

  • Statements

    value를 return하지 않는 것. 명령, 혹은 지시. if문, for문, while문... 뭔가 액션을 컨트롤하는 문들. 리턴값(value)이 없으므로 변수에 할당할 수도 없다.


parameter vs argument

  • parameter (매개변수)

    함수의 정의 부분에 나열되어 있는 변수들 (variable)

  • argument (인자)

    함수를 호출할 때 전달되는 실제 값 (value)

파라미터와 인자의 개수가 일치하지 않아도 오류가 나지 않는다. 함수가 실행되면 arguments라는 유사배열객체가 생성된다. 선언한 파라미터보다 더 많은 인자를 넣어 호출할 수 있는데, 이 때 인자는 arguments에 저장된다.

rest parameter

함수를 정의할 때 마지막 파라미터 앞에 ... 를 붙여 함수 호출 시 제공한 모든 나머지 인수를 표준 자바스크립트 배열로 대체.
arguments는 유사배열객체, rest parameter는 배열!!! MDN에 두 개념의 차이가 나와있는데 뭔소리인지 잘 모르겠당.ㅎㅎ

spread operator

... 을 사용해 펼쳐주는 역할. MDN에는 이렇게 소개되어 있다.

전개 구문을 사용하면 배열이나 문자열과 같이 반복 가능한 문자를 0개 이상의 인수 (함수로 호출할 경우) 또는 요소 (배열 리터럴의 경우)로 확장하여, 0개 이상의 키-값의 쌍으로 객체로 확장시킬 수 있습니다.

rest parameterspread operator가 똑같이 생겨서 헷갈렸(?)었는데 그냥 함수의 파라미터에 spread operator를 쓴 것이 rest parameter였다. 💡 아, 차이점이라면 rest parameter는 함수를 선언(정의)할 때 명시를 해주면 호출 시에 인자를 배열로 만들어주는 것. spread operator는 인자 뿐 아니라 배열, 객체를 얕게 복사할 때도 사용이 가능하다는 것. 약간 쓰임새가 다른 것 같다.


Call by Value vs Call by Reference

함수를 호출할 때 arguments에 value가 넘어오는지, reference가 넘어오는지 차이이다. 자바스크립트는 원시 타입이든 참조 타입이든 call by value로 작동한다.

  • call by value

  • call by reference

profile
한 발짝씩 나아가는 중 〰 🍁 / 자잘한 기록은 아래 🏠 아이콘에 연결된 노션 페이지에 남기고 있어요 😎

0개의 댓글