在Javascript中是否有一种重复使用模板字面量的方法?

3

我想在JavaScript中复用一个模板文字。

下面的代码是无法实现这个目标的:

let int;
let temp= `Number is: ${int}`;
console.log(temp)
// Number is: undefined
int = 1;
console.log(temp)
// Number is: undefined
int = 2;
console.log(temp)
// Number is: undefined

我曾认为改变int变量将会动态地在模板中改变,但是我学到了相反的结果:D

如果可能的话,应该如何正确地做到这一点呢?

谢谢。


cronTimeTemp - 这是什么? - Krishna Prashatt
@KrishnaPrashatt 抱歉,我的错误。我简化了我的示例,忘记更改名称了。 - fedesc
3个回答

9

只需将其作为函数返回:

let int;
let temp= () => `Number is: ${int}`;
console.log(temp())
// Number is: undefined
int = 1;
console.log(temp())
// Number is: 1
int = 2;
console.log(temp())
// Number is: 2


2
你可以将 int 作为参数传递,而不是对变量进行闭包处理。 - adiga
1
由于我不知道 OP 代码的用途,因此我更倾向于指出 OP 代码中问题的最小编辑,以便他能够专注于解决它。 - Mosè Raguzzini

3
您最好的选择是为此创建一个函数。

function getTemp(int) {
  return `Number is: ${int}`;
}


let int;
console.log(getTemp(int))
// Number is: undefined
int = 1;
console.log(getTemp(int))
// Number is: undefined
int = 2;
console.log(getTemp(int))
// Number is: undefined


或者,由于我们使用的是ES6: const getTemp = int => \数字是:${int}`` - Jeremy Thille
1
可以实现,但不建议这样做。这会使阅读变得非常困难。@JeremyThille - MauriceNino
3
只有那些坚持使用ES5并不编写ES6代码的人才适用 :) - Jeremy Thille
1
我很喜欢ES6的许多特性,但在我看来,这确实是一种糟糕的风格。至少将其写成类似于这样的形式:const getTemp = (int) => {\n \Number is: ${int}` \n}`。@JeremyThille - MauriceNino

3
您可以简单地使用标记模板

let temp= (num) => `Number is: ${num}`;

console.log(temp `1`);
console.log(temp `2`)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接