이번 글에서는 첫 번째 인수로 문자열을, 두 번째 인수로 단일 문자를 받는 JavaScript 함수를 작성해 보겠습니다.
이 함수의 역할은 첫 번째 인수로 전달된 문자열이 두 번째 인수로 지정한 문자로 끝나는지 여부를 판별하는 것입니다. 단, ES6에서 제공하는 endsWith() 같은 내장 메서드나 외부 라이브러리 없이 순수하게 구현해야 한다는 조건이 있습니다.
예제 코드
다음은 실제 동작하는 코드입니다 −
const str = 'This is a string';
const checkEnding = (str = '', char = '') => {
// 문자열의 마지막 문자를 가져오는 헬퍼 함수
const getLast = (str = '') => {
const { length } = str;
return str[length - 1];
};
return getLast(str) === char;
};
console.log(checkEnding(str, 'g'))
console.log(checkEnding(str, 'h'))출력 결과
콘솔에 출력되는 결과는 다음과 같습니다 −
true false
코드 설명
위 코드의 동작 원리를 단계별로 살펴보겠습니다.
getLast헬퍼 함수는 구조 분해 할당으로 문자열의length속성을 가져온 뒤, 인덱스를 이용해 마지막 문자를 추출합니다.- 문자열의 인덱스는 0부터 시작하므로, 마지막 문자는 항상
str[length - 1]위치에 존재합니다. checkEnding함수는 추출한 마지막 문자와 두 번째 인수로 전달된 문자를 엄격 동등 연산자(===)로 비교한 결과를 그대로 반환합니다.
예제에서 문자열 'This is a string'의 마지막 문자는 'g'이므로 첫 번째 호출은 true를, 두 번째 호출은 false를 반환합니다.