Что касается итеративных имен переменных, мне нравится создавать динамические переменные, используя Шаблонные литералы .Каждый Том, Дик и Гарри используют стиль массива, что хорошо.Пока вы не работаете с массивами и динамических переменных, о боже!Перегрузка глаз кровью.Так как литералы шаблона сейчас имеют ограниченную поддержку, eval()
- это еще один вариант.
v0 = "Variable Naught";
v1 = "Variable One";
for(i = 0; i < 2; i++)
{//console.log(i) equivalent is console.log(`${i}`)
dyV = eval(`v${i}`);
console.log(`v${i}`); /* => v0; v1; */
console.log(dyV); /* => Variable Naught; Variable One; */
}
Когда я пробирался через API, я сделал этот маленький фрагмент цикла, чтобы увидеть поведениев зависимости от того, что было сделано с литералами шаблона по сравнению, скажем, с Ruby.Мне больше нравилось поведение Руби;необходимость использовать eval()
для получения значения выглядит неубедительно, когда вы привыкли получать его автоматически.
_0 = "My first variable"; //Primitive
_1 = {"key_0":"value_0"}; //Object
_2 = [{"key":"value"}] //Array of Object(s)
for (i = 0; i < 3; i++)
{
console.log(`_${i}`); /* var
* => _0 _1 _2 */
console.log(`"_${i}"`); /* var name in string
* => "_0" "_1" "_2" */
console.log(`_${i}` + `_${i}`); /* concat var with var
* => _0_0 _1_1 _2_2 */
console.log(eval(`_${i}`)); /* eval(var)
* => My first variable
Object {key_0: "value_0"}
[Object] */
}