亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

淺談ES6 模板字符串的具體使用方法

 更新時間:2017年11月07日 14:12:22   作者:見見  
本篇文章主要介紹了淺談ES6 模板字符串的具體使用方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

寫在前面

關于 ES6, 也終于在 2015 年的 7 月 18 號塵埃落定了。雖然說各大瀏覽器還沒有全面的支持,不過這并不妨礙我們一顆想要擼一把的心。在后端,可以使用 Node.js(0.12+)或 io.js, 前端的話,也可以使用Babel 或Traceur 進行語法預轉義成 ES5使用 。

關于該系列(不知道能不能成為一個系列,總是各種懶),會沒有規(guī)律的挑選一些內容來學習。歡迎大家積極糾錯,留言探討。

模板字符串(template strings)

用法

// 普通字符串
`In JavaScript '\n' is a line-feed.`

// 多行字符串
`In JavaScript this is
not legal.`

// 字符串中嵌入變量
var name = "Bob", time = "today";
`Hello ${name}, how are you ${time}?`  // Hello Bob, how are you today?

ES6 中引進的一種新型的字符串字面量語法 - 模板字符串。書面上來解釋,模板字符串是一種能在字符串文本中內嵌表示式的字符串字面量。簡單來講,就是增加了變量功能的字符串。

先來看一下以前我們對字符串的使用:

/**
 * Before ES6 字符串拼接
 */
var name = '丁香醫(yī)生';
var desc = '丁香醫(yī)生是面向大眾的科普性健康類網站';
var html = function(name, desc){
  var tpl = '公司名:' + name + '\n'+
      '簡介:'+ desc;
  return tpl;
}

而現在:

var html = `公司名:${name}
  簡介:${desc}`;

很簡潔吧。

引一段 MDN 對于模板字符串的定義:

模板字符串使用反引號 () 來代替普通字符串中的用雙引號和單引號。模板字符串可以包含特定語法(${expression})的占位符。占位符中的表達式和周圍的文本會一起傳遞給一個默認函數,該函數負責將所有的部分連接起來。

而占位符${},可以是任意的 js 表達式(函數或者運算),甚至是另一個模板字符串,會將其計算的結果作為字符串輸出。如果模板中需要使用$,{等字符串,則需要進行轉義。

看個例子就明白了。

var x = 1;
var y = 2;
`${ x } + ${ y } = ${ x + y}` // "1 + 2 = 3"

不同于普通字符串,模板字符串還可以多行書寫,模板字符串中所有的空格,新行,縮進都會原樣的輸出在生成的字符串中。

而單純的模板字符串還存在著很多的局限性。如:

  1. 不能自動轉義特殊的字符串。(這樣很容易引起注入攻擊)
  2. 不能很好的和國際化庫配合(即不會格式化特定語言的數字,日期,文字等)
  3. 沒有內建循環(huán)語法,(甚至連條件語句都不支持, 只可以使用模板套構的方法)

標簽模板(tagged template)

為此,引出了標簽模板的概念。標簽模板則是在反引號前面引入一個標簽(tag)。該標簽是一個函數,用于處于定制化模板字符串后返回值。就拿上面對特殊字符串舉例。

/**
 * HTML 標簽轉義
 * @param {Array.<DOMString>} templateData 字符串類型的tokens
 * @param {...} ..vals 表達式占位符的運算結果tokens
 * 
 */
function SaferHTML(templateData) {
 var s = templateData[0];
 for (var i = 1; i < arguments.length; i++) {
  var arg = String(arguments[i]);
  // Escape special characters in the substitution.
  s += arg.replace(/&/g, "&amp;")
      .replace(/</g, "&lt;")
      .replace(/>/g, "&gt;");
  // Don't escape special characters in the template.
  s += templateData[i];
 }
 return s;
}
// 調用
var html = SaferHTML`<p>這是關于字符串模板的介紹</p>`;

標簽函數會接收多個參數。

  1. 第一個參數是包含了字符串字面量(即那些沒有變量替換的值)的數組
  2. 后面的參數是已經替換后的變量值

改一下例子1

var name = '丁香醫(yī)生';
var desc = '丁香醫(yī)生是面向大眾的科普性健康類網站';
tag`公司名:${name}簡介:${desc}`

tag 的參數則分別為 ['公司名:','簡介:'], '丁香醫(yī)生', '丁香醫(yī)生是面向大眾的科普性健康類網站'。

有了此類方法,就大大的增加了控制的權利。如上面說的國際化庫甚至循環(huán)語句。

瀏覽器兼容性

  1. 服務器端, io.js 支持
  2. 瀏覽器端, FF34+ , chrome 41+
  3. 移動端 IOS 8, Android 4.4
  4. IE Tech Preview

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • JS實現點擊button按鈕切換圖片

    JS實現點擊button按鈕切換圖片

    這篇文章主要為大家詳細介紹了JS實現點擊button按鈕切換圖片,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • Sea.JS知識總結

    Sea.JS知識總結

    SeaJS是一個遵循CommonJS規(guī)范的JavaScript模塊加載框架。本文給大家分享sea.js知識總結,感興趣的朋友一起學習吧
    2016-05-05
  • JS實現統(tǒng)計復選框選中個數并提示確定與取消的方法

    JS實現統(tǒng)計復選框選中個數并提示確定與取消的方法

    這篇文章主要介紹了JS實現統(tǒng)計復選框選中個數并提示確定與取消的方法,可實現javascript針對頁面復選框元素的統(tǒng)計與提示功能,需要的朋友可以參考下
    2015-07-07
  • javascript中Date format(js日期格式化)方法小結

    javascript中Date format(js日期格式化)方法小結

    這篇文章主要介紹了javascript中Date format,即js日期格式化的方法.實例總結了三種常見的JavaScript日期格式化技巧,需要的朋友可以參考下
    2015-12-12
  • bootstrap——bootstrapTable實現隱藏列的示例

    bootstrap——bootstrapTable實現隱藏列的示例

    本篇文章主要介紹了bootstrapTable實現隱藏列的示例,具有一定的參考價值,有興趣的可以了解一下。
    2017-01-01
  • 使用20行JS代碼實現屏幕錄制功能

    使用20行JS代碼實現屏幕錄制功能

    在開發(fā)中可能有遇到過屏幕錄制的需求,無論是教學、演示還是游戲錄制,都需要通過屏幕錄制來記錄和分享內容,MediaRecorder?是一種強大的技術,可以在瀏覽器端實現屏幕錄制功能,本文將介紹如何使用JS?MediaRecorder?實現屏幕錄制,需要的朋友可以參考下
    2023-11-11
  • Javascript中的方法鏈(Method Chaining)介紹

    Javascript中的方法鏈(Method Chaining)介紹

    這篇文章主要介紹了Javascript中的方法鏈(Method Chaining)介紹,本文講解了Javascript Method Chaining、Method Chaining 使用、Method Chaining VS prototype Chaining等內容,需要的朋友可以參考下
    2015-03-03
  • js控制文本框禁止輸入特殊字符詳解

    js控制文本框禁止輸入特殊字符詳解

    本文主要介紹了js控制文本框禁止輸入特殊字符的相關知識。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-04-04
  • Nuxt v-bind綁定img src不顯示的解決

    Nuxt v-bind綁定img src不顯示的解決

    這篇文章主要介紹了Nuxt v-bind綁定img src不顯示的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • 微信小程序中如何使用flyio封裝網絡請求

    微信小程序中如何使用flyio封裝網絡請求

    這篇文章主要介紹了微信小程序中如何使用flyio封裝網絡請求,Fly.js 通過在不同 JavaScript 運行時通過在底層切換不同的 Http Engine來實現多環(huán)境支持,但同時對用戶層提供統(tǒng)一、標準的Promise API,需要的朋友可以參考下
    2019-07-07

最新評論