javascript - 模板文字如何在 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 引擎并不关心我的“直觉”,但我直觉地假设模板文字中的函数表达式将被执行。
解决方案
好吧,如果您要评估模板文字中“不起作用”的代码,那么您实际上并没有运行该函数。举个例子,这段代码:
function myFunction()
{
return("caca");
};
就其本身而言,这是一个函数,而不是字符串"caca"
。只有当您运行该函数时,它才会返回该值。在您的模板文字中,您只是定义了一个匿名函数。要运行它,您需要执行以下操作:
console.log (`${(function() {return("caca");})()}`);
这在定义函数后运行函数,并记录函数的返回值。
推荐阅读
- kubernetes - Kubernetes“服务器没有资源类型部署”
- wso2 - wso2 ei 调用带有签名的端点
- spring-webflux - 使用 Reactor 和咖啡因时缓存无法正常工作
- java - 深度克隆的实践失败了
- c - 将 char * 数组中的字符串分配给另一个 char * 数组
- django - 在 django 模板中绘制图形
- java - 没有为范围名称“重新启动”注册范围
- eclipse - Sonarlint Eclipse - 停用规则列表
- r - 使用 poliregions 修改 BED
- ruby-on-rails - 如何为 gem 提供广泛的 Rails 版本