JavaScript에서 문자열을 작성/연결하는 방법은 무엇입니까?
P粉513316221
2023-08-27 19:01:23
<p>JavaScript는 대체/보간을 지원합니까? </p>
<h3>개요</h3>
<시간 />
<p>저는 JavaScript 프로젝트를 진행하고 있는데 프로젝트가 커질수록 문자열을 좋은 상태로 유지하는 것이 점점 더 어려워지고 있습니다. JavaScript에서 문자열을 구성하거나 작성하는 가장 간단하고 전통적인 방법이 무엇인지 알고 싶습니다. </p>
<p>지금까지의 경험:</p>
<인용문>
<p>프로젝트가 더욱 복잡해짐에 따라 문자열 연결이 보기 흉해지기 시작하고 유지 관리가 더 어려워집니다. </p>
</인용문>
<p>이 시점에서 가장 중요한 것은 단순성과 가독성입니다. 단지 2~3개의 변수가 아니라 움직이는 부분을 생각해보세요. </p>
<p>마찬가지로 중요한 점은 현재 주요 브라우저(예: ES5 이상)에서 지원된다는 것입니다. </p>
<p>JavaScript 연결 약어를 알고 있습니다:</p>
<pre class="brush:php;toolbar:false;">var x = '안녕하세요';
var y = '세계';
console.log(x + ', ' + y);</pre>
<p>String.concat 함수도 있습니다. </p>
<p>더 깨끗한 것을 찾고 있어요. </p>
<p>Ruby와 Swift는 이를 흥미로운 방식으로 수행합니다. </p>
<p><strong>루비</strong></p>
<pre class="brush:php;toolbar:false;">var x = '안녕하세요'
var y = '세계'
"#{x}, #{y}"</pre>를 인쇄합니다.
<p><strong>스위프트</strong></p>
<pre class="brush:php;toolbar:false;">var x = "안녕하세요"
var y = "세계"
println("(x), (y)")</pre>
<p>저는 JavaScript에도 sprintf.js와 같은 비슷한 것이 있을 것이라고 생각했습니다. </p>
질문
<시간 />
<p>타사 라이브러리 없이도 이 작업을 수행할 수 있나요? 그렇지 않다면 무엇을 사용할 수 있습니까? </p>
다른 답변 중 어느 누구도 "가장 빠른 방법"을 "가장 빠른 방법"으로 설명하지 않았다는 점에 실망했습니다...
저는 여기에서 두 가지 예를 가져왔고 위의
str。 join()
和str.reduce()
nishanths의 답변에서 를 추가했습니다. Linux의 Firefox 77.0.1에 대한 결과는 다음과 같습니다.참고: 테스트할 때
str = str.concat()
和str +=
를 서로 바로 앞이나 뒤에 넣으면 두 번째 테스트가 항상 조금 더 나은 성능을 발휘한다는 사실을 발견했습니다...그래서 이 테스트를 개별적으로 실행하고 다른 결과에 대해 댓글을 달았습니다...그래도 다시 실행시키면 속도가 많이 바뀌기 해서 3번씩 측정했습니다.
한 번에 한 문자:
str = str.concat()
:841、439、956 毫秒 / 1e7 concat() 的
............str +=
:949、1130、664 毫秒 / 1e7 +='s
.......[].join()
:[] 中有 3350, 2911, 3522 ms / 1e7 个字符
......[].reduce()
:[] 中的 3954、4228、4547 毫秒 / 1e7 个字符
한 번에 26개의 문자열:
str = str.concat()
:444、744、479 毫秒 / 1e7 concat() 的
............str +=
:1037, 473, 875 毫秒 / 1e7 +='s
........[].join()
:2693, 3394, 3457 ms / 1e7 字符串在 []
......[].reduce()
:[] 中的 2782、2770、4520 ms / 1e7 字符串
따라서 한 번에 1문자를 추가하든, 한 번에 26개 문자열을 추가하든:
str = str.concat()
和str +=
[].reduce()
,然后是[].join()
브라우저 콘솔에서 쉽게 실행할 수 있는 내 코드:
ES6에서는 다음을 사용할 수 있습니다.
템플릿 문자열: p>
ES5 이하 버전:
+
연산자문자열
으으으으concat (..)
또는 배열 방법을 사용하세요:
join( ..)
:또는 더 이국적으로, reduce(..) 위의 항목과 결합: