ES6(ECMAScript 6)新特性之模板字串用法分析,es6ecmascript

來源:互聯網
上載者:User

ES6(ECMAScript 6)新特性之模板字串用法分析,es6ecmascript

本文執行個體講述了ES6(ECMAscript 6)新特性之模板字串用法。分享給大家供大家參考,具體如下:

ES6引入了一種新型的字串字面量文法,我們稱之為模板字串(template strings)。除了使用反撇號字元 ` 代替一般字元串的引號 ' 或 " 外,它們看起來與一般字元串並無二致。在最簡單的情況下,它們與一般字元串的表現一致:

context.fillText(`Ceci n'est pas une cha?ne.`, x, y);

但我們不能說:“原來只是被反撇號括起來的一般字元串啊”。模板字串為Javascript提供了簡單的字串插值功能,從此以後,你可以通過一種更加美觀、更加方便的方式向字串中插值了。這在Java和C#中早已經有了,不用再用 + 符號連接字串,用起來很方便~

模板字串的使用方式成千上萬,但最讓我暖心的是將其應用於毫不起眼的錯誤訊息提示:

function authorize(user, action) {  if (!user.hasPrivilege(action)) {    throw new Error(    `使用者 ${user.name} 未被授權執行 ${action} 操作。`);  }}

在這個樣本中,${user.name}${action} 被稱為模板預留位置,Javascript將把user.name和action的值插入到最終產生的字串中,例如:使用者jorendorff未被授權打冰球。(這是真的,我還沒有獲得冰球許可證。)

到目前為止,我們所瞭解到的僅僅是比+運算子更優雅的文法,下面是你可能期待的一些特性細節:

模板預留位置中的代碼可以是任意Javascript運算式,所以函數調用、算數運算等這些都可以作為預留位置使用,你甚至可以在一個模板字串中嵌套另一個,我稱之為模板套構(template inception)。

如果這兩個值都不是字串,可以按照常規將其轉換為字串。例如:如果action是一個對象,將會調用它的.toString()方法將其轉換為字串值。

如果你需要在模板字串中書寫反撇號,你必須使用反斜線將其轉義:`\``等價於"`"。

同樣地,如果你需要在模板字串中引入字元$和{。無論你要實現什麼樣的目標,你都需要用反斜線轉義每一個字元:`$`和`\{`。

與一般字元串不同的是,模板字串可以多行書寫:

$("#warning").html(`  <h1>小心!>/h1>  <p>未經授權打冰球可能受罰   將近${maxPenalty}分鐘。</p>`);

模板字串中所有的空格、新行、縮排,都會原樣輸出在產生的字串中。

希望本文所述對大家ECMAscript程式設計有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.