繁体   English   中英

如何使用函数参数来引用同名变量?

[英]How to use a function parameter to refer to the variable of the same name?

我正在制作一个jquery插件来显示钢琴音阶。

我有一个名为markScale(a,b)的函数,它将用于突出显示某些音阶(a参数给出起始音符的音高,即从C开始的多少个半音,默认音阶)。 那没问题。

问题在于b,要显示的比例或和弦的类型。 我已经定义了在不同类型的比例中使用哪些键,如下所示:

  var majorScale=[12,14,16,17,19,21,23,24];
  var nminorScale=[12,14,15,17,19,20,22,24];
  var hminorScale=[12,14,15,17,19,20,23,24];

所以我要做的是以下内容:

  for(i=0;i<8;i++){
  $('#key-'+(b[i]+a)+'-marker').show();
   }

markScale(0,“majorScale”)不起作用,因为它只是一个字符串而不是指我需要的数组变量。

如何将数组变量称为函数的参数?

谢谢

我想我们缺少一些信息,但是如果你想按名称来扩展比例,那么把数组放在一个对象而不是单个变量中。

var scales = {
    majorScale:[12,14,16,17,19,21,23,24],
    nminorScale:[12,14,15,17,19,20,22,24],
    hminorScale:[12,14,15,17,19,20,23,24]
};

然后你可以用字符串引用比例......

var the_scale = "majorScale"

scales[the_scale][i];

虽然可以从字符串引用局部变量,但它需要一种通常不推荐的方法。 全局变量更容易一些。


如果您试图通过比例,那么根本不使用字符串。 您只需使用直接参考。 majorScale

没有更多的上下文很难分辨,但你试过将数组majorScale本身传递给markScale()函数吗?

如:markScale(c,majorScale);

而不是字符串:markScale(c,“majorScale”);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM