Запутанный пример синтаксиса строкового шаблона JavaScript ES6 - PullRequest
1 голос
/ 10 мая 2019

Я прочитал некоторый код (кажется ES6) из какого-то JavaScript/Node.js проекта, и меня смущает синтаксис:

var c  = `
   export const imports = () => {
     const mods = []
     ${files.map((v) => `
['1234', 333]
`)}
     return Promise.all(mods)
   }
   export default imports
 `

Это даст мне

> c
'\n   export const imports = () => {\n     const mods = []\n     \n[\'1234\', 333]\n,\n[\'1234\', 333]\n\n     return Promise.all(mods)\n   }\n   export default imports\n '

если запустить в Node.js.

Я догадался, что это многострочная строка, и я попробовал это:

var s = `
    some multiline
    indented string`
['1234', 333]
`another multiline
    indented string
  `

, но я получил три предложения:

> var s = `
...     some multiline
...     indented string`
undefined
> ['1234', 333]
[ '1234', 333 ]
> `another multiline
...     indented string
...   `
'another multiline\n    indented string\n  '

Кто-нибудь может мне помочь с синтаксисом?Какую спецификацию ECMAScript он использует?Надеюсь, кто-нибудь может дать мне ссылку на конкретный якорь спецификации.

1 Ответ

2 голосов
/ 10 мая 2019

Это пример литералов шаблона .

Обратите внимание, что раздел в $ {...} является интерполяцией строк - в данном случае сбивает с толку тот факт, что эта интерполяция (код ниже) содержит буквенную строку.

 files.map((v) => `
['1234', 333]
`)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...