打印模板文字中的箭头功能

Tza*_*Leh 1 javascript ecmascript-6 template-literals

在名为"Car"的函数中,我添加了一个方法"beep",带有可选的消息输入:

this.beep = function (message) { }
Run Code Online (Sandbox Code Playgroud)

我想使用模板文字来记录函数内部:

console.log(this.name + ': ' + 'Beeeeep!' + (message ? ' ' + message : ''))
Run Code Online (Sandbox Code Playgroud)

我写了以下内容,但输出显示了文字本身的内容:

console.log(`${this.name}: Beeeeep! ${ (message) => {
  if (message) return `${message}`;
    return ' ';
  }}`);
Run Code Online (Sandbox Code Playgroud)

输出(对于this.name ='myCar'):

myCar: Beeeeep! (message) => {
    if (message) return `${message}`;
    return '';
  }
Run Code Online (Sandbox Code Playgroud)

为什么它记录文字的内容而不是透明呢?


*我想出了如何以更简单的方式编写它:

console.log(`${this.name}: Beeeeep! ${message || ''}`)
Run Code Online (Sandbox Code Playgroud)

但是我仍然想要了解第一个代码中的错误.

Far*_* YZ 6

发生这种情况是因为您将函数的主体和定义传递给模板文字的字符串.如果希望函数的结果显示在字符串中,则应该同时使用和调用该函数,除非它将作为包含该函数体的字符串传递.为此,您可以使用IIFE.

console.log(`${this.name}: Beeeeep! ${((message) => {
  if (message) return `${message}`;
  return ' ';
})()}`);
Run Code Online (Sandbox Code Playgroud)