簡體   English   中英

ES6模板字符串和自動分號插入

[英]ES6 template strings and the automatic semicolon insertion

考慮以下代碼:

`abc`.split(`b`)
`abc`.split(`b`)

失敗並出現TypeError: "abc".split(...) is not a function

在這里嘗試。

為了使其工作,我們需要在這兩個語句之間插入一個分號。 如果我們在第二行中使用常規字符串,代碼也可以正常工作:

`abc`.split(`b`)
"abc".split(`b`)

這種行為的原因是什么?

我想這與自動分號插入有一些奇怪的東西有關,但我不知道這是什么。
另外,常規字符串和模板字符串之間似乎存在差異的事實也使我感到困惑。 這些不應該等同嗎?

模板文字可以使用函數標記 ,而字符串文字則不能。 注意

tag`a ${x} b`;

基本上相當於

tag("a ", x, " b");

由於您的表達式`abc`.split(`b`) `abc`.split(`b`)在語法上是有效的,因此此處不會發生自動分號插入 不要在需要的地方省略分號。 並不是說ASI在做一些怪異的事情,它只是在您期望的時候什么也沒做。

如果你想省略分號,讓他們自動插入需要的地方有可能 ,您將需要把一個在開始每一個開頭線([/+-`

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM