더스트스더
공대생블로그
더스트스더
전체 방문자
오늘
어제
  • 분류 전체보기 (20)
    • 코딩 (15)
      • 코테 (12)
    • 디지털월드 (2)
      • 통신 (1)
      • 회로 (1)
    • 에러 해결 (2)
    • 취준일기 (1)

블로그 메뉴

  • 글쓰기
  • 블로그 관리

공지사항

인기 글

태그

  • 통신
  • 자바스크립트
  • 프로토콜
  • npm
  • Node.js
  • 데이터통신
  • 논리회로

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
더스트스더

공대생블로그

[자바스크립트] 중복 기능의 불필요한 함수
코딩/코테

[자바스크립트] 중복 기능의 불필요한 함수

2022. 5. 31. 14:12

불필요한 함수

인수로 전달받은 문자열을 반환하는 함수를 반환하는 함수를 만드시오.(함수의 반환은 문자열이 아닌 함수여야 한다.)

예시

const f1 = redundant("apple")
f1() ➞ "apple"

const f2 = redundant("pear")
f2() ➞ "pear"

const f3 = redundant("")
f3() ➞ ""

시도

해결 코드 1

const redundant = function(str) {
    return function() {
        return str;
    }
};

반환하는 함수는 일종의 콜백 함수로, 호출됨으로써 가치를 다 하는 일반적인 함수와는 달리 인수로 넘겨지거나 반환값으로 사용된다. 매개변수를 지정하지 않았다. 매개변수를 지정하면 undefined가 나온다.

해결 코드 2

const redundant = str => () => str;

보다 간단하게 화살표 함수로 표현하였다.

배운 것

const redundant = str => str => str;

이 예제는 왜 undefined가 나올까?

매개변수는 말 그대로 “매개체 역할을 하는 변수”이며, 함수마다 별개의 스코프를 가지므로 이름이 같다고 해서 연결되는 것이 아니다. 외부 함수의 매개변수 str 와 내부 함수의 매개변수 str은 이름이 같을 뿐 다른 변수이므로 외부 함수가 인수로 받은 문자열은 내부 함수의 매개변수로 들어가지 않는다. 이를 해결하기 위해서는 캐리어 역할을 하는 변수를 하나 더 선언하여 연결할 수도 있지만 이는 변수의 개수를 늘리고 번거롭기 때문에 매개변수를 비워 놓는 것이 가장 현명하다.

'코딩 > 코테' 카테고리의 다른 글

[자바스크립트] 각 자릿수의 합으로 홀수 짝수 구별하기  (0) 2022.06.03
[자바스크립트] 배열 속 부메랑 패턴의 개수 구하기  (0) 2022.06.01
[자바스크립트] 배열 내 참의 개수 구하기  (0) 2022.05.31
[자바스크립트] 성냥개비 하우스 문제  (0) 2022.05.23
[자바스크립트] 입력받은 정수까지의 합 구하기  (0) 2022.05.23
    '코딩/코테' 카테고리의 다른 글
    • [자바스크립트] 각 자릿수의 합으로 홀수 짝수 구별하기
    • [자바스크립트] 배열 속 부메랑 패턴의 개수 구하기
    • [자바스크립트] 배열 내 참의 개수 구하기
    • [자바스크립트] 성냥개비 하우스 문제
    더스트스더
    더스트스더
    열심히살자

    티스토리툴바