Javascript 使用名为like string的变量
如何使用分配给字符串变量的名称全局声明变量?在本例中,复制按钮有data field=“html”、second data field=“css”等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
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实际询问的内容有点不清楚,所以您可能是正确的;)