簡體   English   中英

Javascript函數作為循環變量

[英]Javascript function as a variable in loop

你能幫我一個循環的功能嗎?

我有7個功能:

function menu1(){};
function menu3(){};
function menu4(){};
function menu5(){};
function menu6(){};
function menu7(){};

我需要做的是作為函數menux(){}加載,如果x == 3,則從循環中加載函數menu3()。

for(x=1;x=8;=x++)
{
    function menux(){};
}

您可以將函數包裝到一個對象中:

function menu1(){};
function menu3(){};
function menu4(){};
function menu5(){};
function menu6(){};
function menu7(){};

var wrap={
    menu1:menu1;
    menu3:menu3;
    menu4:menu4;
    menu5:menu5;
    menu6:menu6;
    menu7:menu7;
}

然后,您可以將其歸納為:

for(x=1;x=8;=x++)
{
  if(!wrap["menu"+i]) wrap["menu"+i]();
}

有很多方法可以執行此操作,您也可以執行以下操作:

function menu(int num){
 switch(num)
  {
   case 1:
    menu1();
    break;
   case 2:
    menu2();
    break;

   //....
  }
}

希望對您有所幫助。

您可能應該從更大的角度解釋您的情況以及您想要實現的目標。 這似乎已經不是最理想的方法。 但是,好了,你去:

for(var x=1; x<8; x++)
{
    window['menu' + x]();
}

假設函數聲明在全局命名空間中,則此循環將調用從menu1menu7所有這些函數。

您應該問自己-是否有其他方法。 當然是!

  1. 我建議您制作一個接受參數並根據其執行某些操作的function menu(x) {...} ,例如: function menu(x) {...}

  2. 如果第一個選項對您不可用,建議您使用以下方法來實現對象: var methods = { menu1: function() {}, menu2: function() {}, menu3: function() {}, ... }

  3. 使用eval 在這種情況下,請不要這樣做。 評估功能強大,但在這種情況下,這太過分了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM