Javascript 使用名为like string的变量

Javascript 使用名为like string的变量,javascript,Javascript,如何使用分配给字符串变量的名称全局声明变量?在本例中,复制按钮有data field=“html”、second data field=“css”等 const htmlArea = document.querySelector(".htmlCopy"); const cssArea = document.querySelector(".cssCopy"); const jsArea = document.querySelector(".jsCopy"); const copyButtons

如何使用分配给字符串变量的名称全局声明变量?在本例中,复制按钮有data field=“html”、second data field=“css”等

const htmlArea = document.querySelector(".htmlCopy");
const cssArea = document.querySelector(".cssCopy");
const jsArea = document.querySelector(".jsCopy");

const copyButtons = document.querySelectorAll(".copyBtn");

copyButtons.forEach(function(el) {
  el.addEventListener("click", copyTextfield);
});

function copyTextfield() {
  const place = this.dataset.field+"Area";
  //use a variable named like place
}

使用
窗口[varname]
。“全局变量”实际上绑定到
window
foo
相当于
window。foo
相当于
window['foo']
。不过,您应该使用尽可能少的全局变量。最好将数据分配给具有明确定义范围的对象变量。使用
somevar[…动态名称…]访问将是相同的

参见JS中的变量:使用括号notation@CodeManiac我认为OP想要访问变量
htmlArea
,等等…使用字符串“htmlArea”,因此他们很可能希望首先设置一个对象,然后使用括号符号。您可以使用
this.dataset.field
来形成选择器(并删除全局变量)。例如:
document.querySelector(“.”+this.dataset.field+“Copy”);
使用
const定义的全局变量(如OP的代码所示),不要成为
窗口
的属性。因此,这将不起作用
const
让函数中的
var
前缀变量不是全局变量,它们始终是调用作用域的局部变量或块作用域的较低值。因此,我不确定他在这里指的是什么,他想访问的是哪个全局变量。我认为by“使用名为like place的变量”他的字面意思是
window.aVariable[place]
。是的,但您不能访问使用
const
let
使用
window
声明的变量,即使它们是全局变量()。在OP的代码中,他们使用的是
常量
,因此使用
窗口
访问这些变量不会起作用。我认为“使用一个名为like place的变量”的字面意思是
窗口[位置]
窗口。变量[位置]
。不从功能范围之外访问
place
。我的印象是OP希望像
window[place]
一样使用它,因为place等于
this.dataset.field+“Area”
,而
this.dataset.field
等于
“html”
“css”“
。因此,
place
要么是
“htmlArea”
要么是
“cssArea”
,这两个变量都是变量名。但是,OP实际询问的内容有点不清楚,所以您可能是正确的;)