国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

ES2018 新特征之:非轉義序列的模板字符串

stackfing / 2514人閱讀

摘要:新特性異步迭代器正則表達式反向斷言正則表達式轉義非轉義序列的模板字符串本文正則表達式模式正則表達式命名捕獲組對象展開運算符這個提案由負責,目前已經進入,本提案是的一部分。因此標準移除了對在帶標簽的模版字符串中轉義序列的語法限制。

ES2018 新特性

異步迭代器

正則表達式反向(lookbehind)斷言

正則表達式 Unicode 轉義

非轉義序列的模板字符串(本文)

正則表達式 s/dotAll 模式

正則表達式命名捕獲組

對象展開運算符

Promise.prototype.finally

這個 ECMAScript 提案 “Template Literal Revision” 由 Tim Disney 負責,目前已經進入 stage 4,本提案是 ECMAScript 2018(ES9) 的一部分。該提案讓我們使用模板字符串的標簽函數語法更加的自由。

1. 標簽函數 Tagged templates

標簽使您可以用函數解析模板字符串。標簽函數的第一個參數包含一個字符串值的數組。其余的參數與表達式相關。最后,你的函數可以返回處理好的的字符串(或者它可以返回完全不同的東西)。

function foo(str) {
    return str[0].toUpperCase();
}

foo`justjavac`; // 輸出 JUSTJAVAC
foo`Xyz`; // 輸出 XYZ
2. String.raw()

String.raw() 是一個模板字符串的標簽函數,它的作用類似于 Python 中的字符串前綴 r 和 C# 中的字符串前綴 @,是用來獲取一個模板字符串的原始字面量值的。

語法:

String.raw(callSite, ...substitutions)
String.raw`templateString`

String.raw() 是唯一一個內置的模板字符串標簽函數。

var str = String.raw`Hi
${2+3}!`;
// "Hi
5!"

str.length;
// 字符串長度為 6

str.split("").join(",");
// 分隔字符串
// 結果是:"H,i,,n,5,!"
3. 原始字符串

在標簽函數的第一個參數中,存在一個特殊的屬性 raw,我們可以通過它來訪問模板字符串的原始字符串,而不經過特殊字符的替換。

function foo(str) {
    console.log(str);
    return str[0].toUpperCase();
}

foo`justjavac`;

// 控制臺輸出
["justjavac", raw: ["justjavac"]]

foo`justjavac`;
// 控制臺輸出
["justjavac", raw: ["justjavac"]]
4. 帶標簽函數的轉義序列

自 ES2016 起,帶標簽的模版字面量遵守以下轉義序列的規則:

Unicode字符以"u"開頭,例如 u00A9

Unicode碼位用"u{}"表示,例如 u{2F804}

十六進制以"x"開頭,例如 xA9

八進制以""和數字開頭,例如 251

對于每一個 ECMAScript 語法,解析器都會去查找有效的轉義序列,對于無效的轉義序列,直接拋出 SyntaxError

String.raw``;
Uncaught SyntaxError: Unterminated template literal
5. ES2018 關于非法轉義序列的修訂

帶標簽函數的模版字符串應該允許嵌套支持常見轉義序列的語言(例如 DSLs、LaTeX)。

因此 ECMAScript 2018 標準移除了對 ECMAScript 在帶標簽的模版字符串中轉義序列的語法限制。

function tag(strs) {
  strs[0] === undefined
  strs.raw[0] === "unicode and u{55}";
}

// 在標簽函數中使用
tag`unicode and u{55}`; // 結果是 undefined

// 不在標簽函數中使用
let bad = `bad escape sequence: unicode`;
// throws early error:SyntaxError: Invalid Unicode escape sequence
6. 實現

V8 - Chrome 62

SpiderMonkey - Firefox 53

JavaScriptCore - 版本未知

ChakraCore - 開發中

Babel - 7.x

7. 相關鏈接:

https://github.com/tc39/propo...

https://tc39.github.io/propos...

https://developer.mozilla.org...

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/93145.html

相關文章

  • ES2018 特征:正則表達式 dotAll 模式

    摘要:或者使用來匹配空白字符增加標志在最新的規范中,為的正則表達式增加了一個新的標志用來表示。標志用于指定多行輸入字符串應該被視為多個行。標志只影響和標志只影響目前在正則表示中所有修飾符的含義實現 ES2018 新特性 異步迭代器 正則表達式反向(lookbehind)斷言 正則表達式 Unicode 轉義 非轉義序列的模板字符串 正則表達式 s/dotAll 模式(本文) 正則表達式命...

    Joyven 評論0 收藏0
  • ES2018 特征:異步迭代器 for-await-of

    摘要:不幸的是,迭代器不能用來表示這樣的數據源。即使是的迭代器也是不夠的,因為它的是異步的,但是迭代器需要同步確定狀態。異步迭代器一個異步迭代器就像一個迭代器,除了它的方法返回一個的。 ES2018 新特性 異步迭代器(本文) 正則表達式反向(lookbehind)斷言 正則表達式 Unicode 轉義 非轉義序列的模板字符串 正則表達式 s/dotAll 模式 正則表達式命名捕獲組 對...

    klivitamJ 評論0 收藏0
  • 每個JavaScript開發人員都應該知道ES2018功能(譯文)

    摘要:為了使程序員能夠一次一個地處理集合中的元素,引入了迭代器接口。迭代器使用該方法獲取對象屬性名稱的數組,然后將其分配給常量。迭代器的缺點是它們不適合表示異步數據源。每次循環時,都會調用迭代器的方法,它返回一個。 前言 原文地址:https://css-tricks.com/new-es2018-features-every-javascript-developer-should-kno...

    leonardofed 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<