ES6(ECMAScript 6)新特性之模板字符串用法分析
本文實(shí)例講述了ES6(ECMAScript 6)新特性之模板字符串用法。分享給大家供大家參考,具體如下:
ES6引入了一種新型的字符串字面量語(yǔ)法,我們稱之為模板字符串(template strings)。除了使用反撇號(hào)字符 ` 代替普通字符串的引號(hào) ' 或 " 外,它們看起來(lái)與普通字符串并無(wú)二致。在最簡(jiǎn)單的情況下,它們與普通字符串的表現(xiàn)一致:
context.fillText(`Ceci n'est pas une cha?ne.`, x, y);
但我們不能說(shuō):“原來(lái)只是被反撇號(hào)括起來(lái)的普通字符串啊”。模板字符串為JavaScript提供了簡(jiǎn)單的字符串插值功能,從此以后,你可以通過(guò)一種更加美觀、更加方便的方式向字符串中插值了。這在Java和C#中早已經(jīng)有了,不用再用 + 符號(hào)連接字符串,用起來(lái)很方便~
模板字符串的使用方式成千上萬(wàn),但最讓我暖心的是將其應(yīng)用于毫不起眼的錯(cuò)誤消息提示:
function authorize(user, action) {
if (!user.hasPrivilege(action)) {
throw new Error(
`用戶 ${user.name} 未被授權(quán)執(zhí)行 ${action} 操作。`);
}
}
在這個(gè)示例中,${user.name}和${action} 被稱為模板占位符,JavaScript將把user.name和action的值插入到最終生成的字符串中,例如:用戶jorendorff未被授權(quán)打冰球。(這是真的,我還沒有獲得冰球許可證。)
到目前為止,我們所了解到的僅僅是比+運(yùn)算符更優(yōu)雅的語(yǔ)法,下面是你可能期待的一些特性細(xì)節(jié):
模板占位符中的代碼可以是任意JavaScript表達(dá)式,所以函數(shù)調(diào)用、算數(shù)運(yùn)算等這些都可以作為占位符使用,你甚至可以在一個(gè)模板字符串中嵌套另一個(gè),我稱之為模板套構(gòu)(template inception)。
如果這兩個(gè)值都不是字符串,可以按照常規(guī)將其轉(zhuǎn)換為字符串。例如:如果action是一個(gè)對(duì)象,將會(huì)調(diào)用它的.toString()方法將其轉(zhuǎn)換為字符串值。
如果你需要在模板字符串中書寫反撇號(hào),你必須使用反斜杠將其轉(zhuǎn)義:`\``等價(jià)于"`"。
同樣地,如果你需要在模板字符串中引入字符$和{。無(wú)論你要實(shí)現(xiàn)什么樣的目標(biāo),你都需要用反斜杠轉(zhuǎn)義每一個(gè)字符:`$`和`\{`。
與普通字符串不同的是,模板字符串可以多行書寫:
$("#warning").html(`
<h1>小心!>/h1>
<p>未經(jīng)授權(quán)打冰球可能受罰
將近${maxPenalty}分鐘。</p>`);
模板字符串中所有的空格、新行、縮進(jìn),都會(huì)原樣輸出在生成的字符串中。
希望本文所述對(duì)大家ECMAScript程序設(shè)計(jì)有所幫助。
相關(guān)文章
一個(gè)html5播放視頻的video控件只支持android的默認(rèn)格式mp4和3gp
寫了個(gè)html5播放視頻的video控件,只支持mp4和3gp(android和ios默認(rèn)支持的格式就寫了這個(gè)) ,需要的朋友可以參考下2014-05-05
js判斷手機(jī)端(Android手機(jī)還是iPhone手機(jī))
現(xiàn)在使用手機(jī)上網(wǎng)的人越來(lái)越多,一些下載網(wǎng)站會(huì)通過(guò)判斷不同系統(tǒng)手機(jī)來(lái)訪問不同網(wǎng)頁(yè),比如iPhone和Android。下面我們就來(lái)介紹一下如何用javascript判斷iPhone或Android手機(jī)訪問2015-07-07
js生成隨機(jī)數(shù)之random函數(shù)隨機(jī)示例
js生成隨機(jī)數(shù)可以使用JavaScript Math.random()內(nèi)置函數(shù),下面有個(gè)不錯(cuò)的示例,大家可以嘗試操作下2013-12-12
js實(shí)現(xiàn)文本框支持加減運(yùn)算的方法
這篇文章主要介紹了js實(shí)現(xiàn)文本框支持加減運(yùn)算的方法,可實(shí)現(xiàn)文本框輸入加減運(yùn)算式同時(shí)右側(cè)實(shí)時(shí)顯示對(duì)應(yīng)計(jì)算結(jié)果的功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08
根據(jù)后端返回的json數(shù)據(jù)快速生成ts類型的實(shí)現(xiàn)代碼
在前端開發(fā)中,我們通常需要處理來(lái)自后端或其他數(shù)據(jù)源的 JSON 數(shù)據(jù),這些數(shù)據(jù)可能非常復(fù)雜,包含不同類型的屬性,甚至嵌套對(duì)象和數(shù)組,為了更好地使用這些數(shù)據(jù),我們希望將其轉(zhuǎn)換為TypeScript類型定義,以獲得類型檢查和代碼智能提示的好處2023-10-10
JS在一定時(shí)間內(nèi)跳轉(zhuǎn)頁(yè)面及各種刷新頁(yè)面的實(shí)現(xiàn)方法
這篇文章主要介紹了JS在一定時(shí)間內(nèi)跳轉(zhuǎn)頁(yè)面及各種刷新頁(yè)面的實(shí)現(xiàn)方法的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-05-05

