javascript - 在 JavaScript 中从数组键创建变量

标签 javascript arrays variables

有没有办法使用数组值创建变量?例如。

//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/

相关文章:

javascript - 通过索引读取 localStorage 值

javascript - 如何在 userInput 中间获取一些值

具有未命名函数的 C++ 函数指针数组

javascript - 无法使用循环中的参数字符填充数组

php - 是否可以在 php 中传递像 myfunction($var1 ="hi") 这样的变量?

javascript - 文本区 - 当用户编辑文本区的内容时,文本颜色会发生变化

javascript - 文档级事件监听器被复制

调用结构类型的函数并返回指针不运行

javascript - 将很长的变量从 PHP 传递到 Javascript

c - C 中的可变参数在 Valgrind 中创建错误