Wie erstellt/verkettet man Strings in JavaScript?
P粉513316221
2023-08-27 19:01:23
<p>Unterstützt JavaScript Ersetzung/Interpolation? </p>
<h3>Übersicht</h3>
<hr />
<p>Ich arbeite an einem JavaScript-Projekt und je größer es wird, desto schwieriger wird es, die Zeichenfolgen in gutem Zustand zu halten. Ich würde gerne wissen, wie man einen String in JavaScript am einfachsten und traditionellsten konstruieren oder erstellen kann. </p>
<p>Meine bisherigen Erfahrungen:</p>
<blockquote>
<p>Je komplexer Projekte werden, desto hässlicher sieht die Zeichenfolgenverkettung aus und es wird schwieriger, sie beizubehalten. </p>
</blockquote>
<p>Das Wichtigste an dieser Stelle ist Einfachheit und Lesbarkeit. Denken Sie an eine Reihe beweglicher Teile, nicht nur an zwei bis drei Variablen. </p>
<p>Ebenso wichtig ist, dass es derzeit von den wichtigsten Browsern (d. h. mindestens ES5) unterstützt wird. </p>
<p>Ich kenne die Abkürzung für JavaScript-Verbindungen: </p>
<pre class="brush:php;toolbar:false;">var x = 'Hallo';
var y = 'Welt';
console.log(x + ', ' + y);</pre>
<p>Es gibt auch die Funktion String.concat. </p>
<p>Ich suche etwas Saubereres. </p>
<p>Ruby und Swift tun dies auf interessante Weise. </p>
<p><strong>Ruby</strong></p>
<pre class="brush:php;toolbar:false;">var x = 'Hallo'
var y = 'Welt'
print „#{x}, #{y}“</pre>
<p><strong>Swift</strong></p>
<pre class="brush:php;toolbar:false;">var x = "Hallo"
var y = „Welt“
println("(x), (y)")</pre>
<p>Ich dachte, es könnte etwas Ähnliches in JavaScript geben, vielleicht so etwas wie sprintf.js. </p>
<h3>Frage</h3>
<hr />
<p>Kann dies ohne eine Bibliothek eines Drittanbieters durchgeführt werden? Wenn nicht, was kann ich verwenden? </p>
令我失望的是,其他答案中没有人将“最佳方式”解释为“最快方式”......
我从此处提取了两个示例,并添加了
str。 join()
和str.reduce()
来自上面 nishanths 的回答。以下是我在 Linux 上的 Firefox 77.0.1 上的结果。注意:我在测试这些时发现,如果我将
str = str.concat()
和str +=
直接放在之前或之后彼此之间,第二个总是表现得更好一些...所以我单独运行这些测试并评论其他测试的结果...即使如此,如果我重新运行它们,它们的速度也会很大变化,所以我每个都测量了 3 次。
一次 1 个字符:
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(..) 与上述任何一项组合: