Skip to content

Latest commit

 

History

History
35 lines (19 loc) · 4 KB

proposal-string-pad-start-end.md

File metadata and controls

35 lines (19 loc) · 4 KB

String.prototype.padStart/padEnd에 대한 ECMAScript 제안, 사양, 테스트 및 참조 구현.

초기 제안서는 @rwaldron@dherman의 의견을 바탕으로 @KevinGrandon이 초안을 작성했습니다. @rwaldron, @allenwb@dherman의 의견과 함께 @ljharb가 작성한 사양을 업데이트 했습니다.

본 제안서는 전체 과정에서 현재 4 단계에 있습니다.

지정된 TC39 검토자: @littledan @michaelficarra

이론적 근거

기본 메서드를 사용하여 문자열을 채우는 합리적인 방법이 없으면, 오늘날 JavaScript 문자열로 작업하는 것이 예상보다 더 어렵습니다. 이러한 기능이 없으면, 언어가 불완전하게 느껴지고, 매우 세련된 경험과 단절 될 수 있습니다.

일반적인 사용으로 인해, 문자열 패딩 기능은 대부분의 웹 사이트 및 프레임워크에 존재합니다. 예를 들어, FirefoxOS의 거의 모든 앱은 모두 일반적인 문자열 패딩 작업이 필요했기 때문에 왼쪽 패드 기능을 구현 했습니다.

현재 대부분의 문자열 패딩 구현이 비효율적일 가능성이 높습니다. 이를 플랫폼으로 가져오면 더 이상 이러한 공통 기능을 구현할 필요가 없으므로 웹 성능과 개발자 생산성이 향상됩니다.

명세서

명세서를 마크다운 형식으로 보거나 HTML로 렌더링할 수 있습니다.

이름 지정

startsWith/endsWith가 있음에도 불구하고 trimStart/trimRightreduce/reduceRight와의 일관성을 위해 , padLeftpadRight로 정했습니다. 2015년 11월 TC39 회의에 따른 개정: 이름은 padStart/padEnd이고 trimLeft/trimRighttrimStart/trimEnd로 변경되며, trimLeft/trimRight 별칭은 웹 호환성을 위해 부록 B에 추가됩니다.

"최소 길이" vs "최대 길이"의 의미론

이 제안을 명세서 언어로 개정하는 동안, 우리는 첫 번째 매개 변수가 패딩된 문자열의 최소 길이 또는 최대 길이를 결정해야 하는지에 대해 자세히 논의 했습니다. 특히, "최소 길이" 의미론에서는 'foo'.padEnd(4, '12')foo12를 출력하고, "최대 길이" 의미론은 foo1을 출력한다고 말합니다. padStart/padEnd의 주요 사용 사례 중 하나는 열에 있는 단일 공백 문자 형식을 지정하는 것이고, String#repeat을 통해 "최소 길이" 의미론을 달성할 수 있기 때문에, 우리는 "최대 길이"가 훨씬 더 유용한 접근법이라고 결정 했습니다.

채워질 문자열과 관련된 왼쪽 패딩: 다른 언어와의 일관성

#6에 따라, '왼쪽' 및 '오른쪽' 기능을 모두 제공하는 다중 문자 채워질 문자열을 지원하는 유일한 언어는 Ruby와 PHP입니다. 두 언어의 "왼쪽 패드"는 마지막이 아닌 채워질 문자열의 첫 부분을 차지합니다. 이것이 중요한 이유에 대한 분명한 예는 "abc".padStart(10, "0123456789")가 채워질 문자열의 마지막 부분을 취하면 "3456789abc"가 되고 첫 부분을 취하면 "0123456abc"가 되는 것입니다. 즉, string.padStart(mask.length, mask)는 예상대로 작동해야 합니다.