JavaScript ES6字符串模板语法的一个混乱示例

JavaScript ES6字符串模板语法的一个混乱示例,javascript,ecmascript-6,Javascript,Ecmascript 6,我已经从一些JavaScript/Node.js项目中阅读了一些代码(似乎是ES6),我对语法感到困惑: var c = ` export const imports = () => { const mods = [] ${files.map((v) => ` ['1234', 333] `)} return Promise.all(mods) } export default imports ` 这会给我 > c '\n

我已经从一些
JavaScript/Node.js
项目中阅读了一些代码(似乎是ES6),我对语法感到困惑:

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规范?希望有人能给我特定规范锚的链接。

这是一个示例

请注意${…}中的部分是字符串插值——在本例中令人困惑的是,插值本身(下面的代码)包含一个文本字符串

 files.map((v) => `
['1234', 333]
`)

你的<代码> var s<代码>无效(你的意思是从中间的后端逃出,或者用分号,或某物?)它是有效的。唯一的问题是var s=''语句会将valud分配给s变量,并且语句本身不会返回任何未定义的内容,所以会打印。这是模板文本。其中${}可用于执行任何字符串替换。