使用模板字符串(ES6)作为函数中的返回变量

时间:2016-02-18 22:40:31

标签: javascript ecmascript-6

我正在寻找一种方法来使用函数中变量的模板字符串。

这是一个工作示例(不是变量)

let s = `Hello ${this.name}!`;
let f = function () {
  return s;
}
f.bind({
  name: 'Stackoverflow-User'
})(); // Hello undefined!

这是不可行的示例(在变量中)

{{1}}

1 个答案:

答案 0 :(得分:2)

这:

let f = function () {
  return `Hello ${this.name}!`
}

编译成这个:

let f = function () {
  return "Hello " + this.name.toString() + "!";
}

一旦f被称为适当对象的方法,它就会起作用。 每次调用函数时都会计算表达式。

在你的第二个案例中:

var s = "Hello " + this.name.toString() + "!";

let f = function () {
  return s;
}

s仅在加载时获得其值,并且错误this

使其以这种方式工作的唯一方法是从中生成函数:

let s = new Function("return `Hello ${this.name}!`;");

并将其用作:

let f = function () {
  return s.call(this);
}

有点奇怪,但会奏效。