首页 > 解决方案 > 模板文字如何在 javascript 中工作?

问题描述

我只是好奇 JS 如何处理模板文字中的表达式。一方面,

console.log(`hi ${3>5}`); //false

意味着逻辑表达式确实被评估了,并且

function myFunction()
{
      return("caca");
};

console.log(`${myFunction()}`);`

实际上产生了所需的“caca”,这意味着函数的执行就像之前的逻辑表达式一样,但是

console.log (`${function() {return("caca");}}`); //returns function() {return("caca");}

才不是。我知道将函数表达式标记为自执行实际上会运行它,但我只是想知道为什么 JS 引擎会这样。我知道 JS 引擎并不关心我的“直觉”,但我直觉地假设模板文字中的函数表达式将被执行。

标签: javascript

解决方案


好吧,如果您要评估模板文字中“不起作用”的代码,那么您实际上并没有运行该函数。举个例子,这段代码:

function myFunction()
{
      return("caca");
};

就其本身而言,这是一个函数,而不是字符串"caca"。只有当您运行该函数时,它才会返回该值。在您的模板文字中,您只是定义了一个匿名函数。要运行它,您需要执行以下操作:

console.log (`${(function() {return("caca");})()}`);

这在定义函数后运行函数,并记录函数的返回值。


推荐阅读