如何将字符串存储在包含模板文字 (Javascript) 的数组中?

How to store strings in an array that include Template Literals (Javascript)?

我正在尝试将大量文本存储在一个数组中(这样我就可以使用一个值轻松地将其提取出来)。 问题出在我想使用模板文字的字符串中,因此字符串会根据输入而变化(例如,一旦他们添加了他们的名字,它就会使用他们的名字。

如果我在函数中包含该字符串,我可以毫无问题地运行它。例如:

textbox.textContent =  `what does ${nameTemp} do?`;

没问题,它会将 "nameTemp" 更改为用户输入的内容。但是下面这个没有!它总是 returns "tim" 作为名称(默认值为 "nameTemp")

textbox.textContent2 = Title[1]; 

您可以在函数 saveName() 的下面代码中看到第一行(带有包含模板文字的完整字符串)确实有效。但是下面的行使用数组中的字符串(带有模板文字in) 不更新。它使用默认字符串“tim”。 我究竟做错了什么?我怎样才能最好地将字符串存储在具有可更改元素的数组中?在此先感谢您的任何建议。

var nameTemp = `tim`;

let Title = [];
Title[0] = "What are you called?";
Title[1] = `what does ${nameTemp} do?`;

const input = document.createElement('input');
input.type = "text";
input.id ="nameText";
input.className +='inputStyle';

 function addNameInput()
    {
     container.appendChild(input);
    }

 function saveName()
    {
     if (nameText.value !== null)
     {
     nameTemp = nameText.value;
     textbox.textContent =  `what does ${nameTemp} do?`; //This works, it displays the inputed name
     textbox.textContent2 = Title[1];  // This will always display 'tim'
     nameText.parentNode.removeChild(nameText);
     incrementState();
     }
    }

Javascript 模板字符串在您首次创建时进行评估,它们不会神奇地更新。 Title[1] 是用 "tim" 初始化的,即使您更改了 nameTemp 变量,它也会保持不变。如果您想将模板字符串存储在数组中,那么您可以存储一个 returns 模板字符串的函数,例如:

Title[1] = () => `what does ${nameTemp} do?`;

然后你可以通过

获取值
textbox.textContent2 = Title[1]();