有没有办法使用数组值创建变量?例如。
//Define all Notes in Sharps and Flats
var noteSharp = ["A","A#","B","C","C#","D","D#","E","F","F#","G","G#"];
var noteFlat = ["A","Bb","B","C","Db","D","Eb","E","F","Gb","G","Ab"];
//Make all Major Scales
for (var x=0; x<12; x++){
var noteSharp[x] + "Sharp" = noteSharp[x] + noteSharp[x+2] + noteSharp[x+4] + noteSharp[x+5] + noteSharp[x+7] + noteSharp[x+9] + noteSharp[x+11];
var noteFlat[x] + "Flat" = noteFlat[x] + noteFlat[x+2] + noteFlat[x+4] + noteFlat[x+5] + noteFlat[x+7] + noteFlat[x+9] + noteFlat[x+11];
}
如果我执行 console.log(CSharp) 它会说 CSharp 未定义。
在此示例中,我尝试定义总共 24 个变量。我期望获得的一些变量名称示例是 ASharp 、 A#Sharp 、 BbFlat 、 DFlat 。 CSharp 和 CFlat 变量都应为“CDEFGAB”
如果这是不可能的,是因为必须在运行时浏览器读取 JavaScript 文件之前定义变量,以确保内存泄漏安全。
最佳答案
如果你想创建一个全局变量,请将其附加到窗口
window[variableNameHere] = itsValue;
就您而言:
window[noteSharp[x] + "Sharp"] = noteSharp[x] + ...
但是污染全局命名空间是不好的。将其放在另一个命名空间中怎么样:
var sharps = {};
var flats = {};
sharps[noteSharp[x] + "Sharp"] = noteSharp[x]...
flats[noteFlat[x] + "Sharp"] = noteFlat[x]...
//access them
sharps.ASharp;
我完全不知道你的代码是做什么的,但这个解决方案应该为你指明正确的方向。
关于javascript - 在 JavaScript 中从数组键创建变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20852371/