我想連接一串字符串以在Javascript中構建查詢字符串。以前我已經經歷了醜陋的字符串連接來實現這一點:ES6什麼時候使用String.raw默認模板文字
var queryString = "?action=" + actionValue + "&data=" + dataValue";
但隨着ES6我看到有提供了新的方法,可以幫助我達到同樣的效果有多大更好看的代碼,就像在C#6 字符串插值:
string s = $"action={actionValue}&data={dataValue}"
我有兩個默認模板文字和String.raw
,雖然每個命令的語法略有不同,他們都工作進行測試。我傾向於在我的最終副本中使用String.raw
,因爲它不允許字符串被標記,因此將來像缺省模板文字一樣被修飾。
雖然它說,在MDN docs是String.raw
基本上調用默認模板文字的方法,但我喜歡的String.raw
更好的語法...我打電話我串的花括號,我格式化,所以也許裏面的String.join
方法那是String.raw
的誤用。
是否有任何ES6嚮導能夠啓發我,併爲其中一個提供理由?
我的代碼:
var defaultTemplateStringUrl = `@Url.Action("DownloadMultiple")?inIds=${inData.join(',')}&outIds=${outData.join(',')}&truckId=${truckId}`;
var rawStringUrl = String.raw `@Url.Action("DownloadMultiple")?inIds=${inData.join(',')}&outIds=${outData.join(',')}&truckId=${truckId}`;
window.open(/*url goes here*/);
到底是如何使用'String.raw'使用?你是否將它稱爲函數?這似乎很不方便。 –
我對你的問題有點困惑。你不能只是'var queryString = \'?action = $ {actionValue}&data = $ {dataValue} \';'? –
你爲什麼要原始字符串?你所要做的就是使用一個標籤,它在每個插值上調用'encodeURIComponent'。 – Bergi