Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么尾部模板文本执行函数?_Javascript_Ecmascript 6 - Fatal编程技术网

Javascript 为什么尾部模板文本执行函数?

Javascript 为什么尾部模板文本执行函数?,javascript,ecmascript-6,Javascript,Ecmascript 6,今天在Twitter上遇到了一个javascript之谜: //#js 常数a=f=>f``; 常数b=f=>f``; console.log(a(=>===b(=>)); //你认为这会/可能会印什么 乍一看,这似乎有点道理a是一个函数,它接受一些输入f,然后执行f`。什么f`对我来说完全是个谜,所以我把它扔进了控制台,收到了这个输入 (()=>{console.log('hi')})` 嗨 因此,后面的模板文本似乎执行其前面的函数。我知道模板文字是立即执行的代码,但这种行为对我来说毫无意

今天在Twitter上遇到了一个javascript之谜:

//#js
常数a=f=>f``;
常数b=f=>f``;
console.log(a(=>===b(=>));
//你认为这会/可能会印什么

乍一看,这似乎有点道理
a
是一个函数,它接受一些输入
f
,然后执行
f`
。什么
f`
对我来说完全是个谜,所以我把它扔进了控制台,收到了这个输入

(()=>{console.log('hi')})`


因此,后面的模板文本似乎执行其前面的函数。我知道模板文字是立即执行的代码,但这种行为对我来说毫无意义。有人能给我解释一下吗?

也许这段代码可以帮助您:

var test1 = 2;
var test2 = 3;

function fTest(strings, ...params){
  strings.forEach((x) => console.log(`string param: ${x}`));
    params.forEach((x, index) => console.log(`param ${index}: ${x}`));
}

const a = (f, param1, param2) => f`tagged ${param1} template ${param2} literals`;
a(fTest, test1, test2);
该mistery是标记的模板文本: 本质上,您将向函数传递一个模板文本,该函数将把占位符以及它们之间的字符串解释为参数

您可以阅读文档


另一件事:如果要忽略转义序列,可以使用
字符串
上的
raw
函数(参见示例)。

这是一个标记的模板文本: