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

資訊專欄INFORMATION COLUMN

ES2018 新特征之:非轉(zhuǎn)義序列的模板字符串

stackfing / 2503人閱讀

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

ES2018 新特性

異步迭代器

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

正則表達式 Unicode 轉(zhuǎn)義

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

正則表達式 s/dotAll 模式

正則表達式命名捕獲組

對象展開運算符

Promise.prototype.finally

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

1. 標簽函數(shù) Tagged templates

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

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

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

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

語法:

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

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

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

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

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

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

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

foo`justjavac`;

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

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

自 ES2016 起,帶標簽的模版字面量遵守以下轉(zhuǎn)義序列的規(guī)則:

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

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

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

八進制以""和數(shù)字開頭,例如 251

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

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

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

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

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

// 在標簽函數(shù)中使用
tag`unicode and u{55}`; // 結(jié)果是 undefined

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

V8 - Chrome 62

SpiderMonkey - Firefox 53

JavaScriptCore - 版本未知

ChakraCore - 開發(fā)中

Babel - 7.x

7. 相關鏈接:

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

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

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

文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/93145.html

相關文章

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

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

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

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

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

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

    leonardofed 評論0 收藏0

發(fā)表評論

0條評論

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