JS Native는 편리한 Formatter 기능을 제공하지 않으며, 캐릭터 스 플라이 싱으로 혼란스럽고 읽기가 어렵고 사용하기가 매우 불편합니다. 나는 개인적으로 c#에 제공된 구문이 다음과 같이 더 유용하다고 생각합니다.
string.format ( "오신 것을 환영합니다 '{0}', '{0}'은 훌륭합니다. {1} it!", "JavaScript", "Love");이 순차적 대체 방법은 비교적 명확하며 동일한 컨텐츠를 교체 할 때 중복 매개 변수를 전달하는 상황을 저장할 수 있습니다. 다음은 JS의 간단한 구현 버전입니다 (엄격한 테스트없이) :
(함수 (Exports) {Exports.format = function () {var args = array.prototyp.slice.call (Arguments), sourcest = args.shift (); 함수 execreplace (텍스트, 교체, 색인) {return text.replace ( "// {"+index+"//}", 'G'); args.reduce (execreplace, sourcest);}}) (window.utils = wind열쇠는이 문장입니다.
args.reduce (execreplace, sourcest);
여기서 배열의 감소 기능이 사용됩니다. 감소 및 환원은 ES5에서 새로 추가 된 기능입니다. 이 함수의 매개 변수는 감소합니다 (콜백, InitialValue). 콜백은 4 개의 매개 변수를 수신합니다.
previousValue :
콜백 함수의 첫 번째 항목을 가로 지르면 InitialValue가 지정되면 INITIALVALUE가 직접 사용됩니다. 배열의 첫 번째 요소가 지정되지 않으면 배열의 첫 번째 요소가 사용됩니다.
두 번째 및 후속 횡단의 값은 이전 트래버스의 결과입니다.
마지막 트래버스에 의해 반환 된 결과는 감소 함수의 반환 값으로 사용됩니다.
CurrentValue : 현재 항목이 통과했습니다
색인 : 배열에서 현재 항목의 인덱스
배열 : 원본 배열
ExecReplace의 각 실행에서 이전 교체 후 결과는 원래 교체 문자열로 사용되며 현재 항목의 인덱스는 교체 할 컨텐츠로 사용되며 결국 교체 컨텐츠를 완성합니다.
참고 : 환원은 기본적으로 순서가 오른쪽에서 왼쪽에서 왼쪽으로임을 제외하고는 기능 감소와 동일합니다.