簡體   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