> 웹 프론트엔드 > JS 튜토리얼 > ES6 템플릿 리터럴의 평가를 연기하는 방법은 무엇입니까?

ES6 템플릿 리터럴의 평가를 연기하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-11-06 20:42:03
원래의
509명이 탐색했습니다.

How to Defer Evaluation of ES6 Template Literals?

ES6 템플릿 리터럴에 대한 실행 연기

ES6 템플릿 리터럴은 문자열 보간을 위한 강력한 구문 설탕을 제공하지만, 평가를 연기하려는 경우에는 어떻게 해야 합니까? 동적 요소 생성 이후까지?

문제

전통적으로 String.prototype.format을 사용하면 지연 평가가 허용됩니다. 그러나 템플릿 리터럴은 구문 분석 시 평가되므로 이러한 접근 방식을 방지합니다.

해결책 1: 태그가 있는 템플릿 리터럴 사용

태그가 있는 템플릿 리터럴을 사용하면 템플릿을 가로채서 처리할 수 있습니다. 평가 전 리터럴:

function formatter(literals, ...substitutions) {
    return {
        format: function() {
            // ... code here ...
        }
    };
}
console.log(formatter`Hello, <pre class="brush:php;toolbar:false">String.prototype.format = function() {
    var args = arguments;
    return this.replace(/$\{p(\d)\}/g, function(match, id) {
        return args[id];
    });
};
console.log("Hello, ${p0}. This is a ${p1}".format("world", "test"));
로그인 후 복사
. This is a `.format("world", "test"));

해결책 2: 일반 문자열 리터럴 사용

또는 일반 문자열 리터럴을 사용하고 대체 항목을 수동으로 구문 분석할 수 있습니다.

const welcome = (p0, p1) => `Hello, ${p0}. This is a ${p1}`;
console.log(welcome("world", "test"));
로그인 후 복사

해결책 3: 템플릿 리터럴을 피하고 함수 매개변수를 사용하세요

마지막으로 템플릿 리터럴을 완전히 피하고 함수 매개변수를 사용할 수 있습니다.

고려 사항

  • 솔루션 1은 가장 뛰어난 유연성을 제공하지만 간단한 사용 사례에서는 지나치게 복잡할 수 있습니다.
  • 솔루션 2는 더 간단하지만 수동 구문 분석이 필요합니다.
  • 솔루션 3은 템플릿 리터럴이 없는 전통적인 접근 방식을 사용합니다.

위 내용은 ES6 템플릿 리터럴의 평가를 연기하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿