2016-06-01 88 views
-3

我想傳遞一些代碼行作爲參數。 Javascript函數作爲參數傳入

 function t_1() 
     { 
      var t6 = ''; 
      //// 
      t_2(d1,d2,d3) 
     } 

     function t_2(c1, c2, c3) 
     { 
      var t1 = 12; 
      if(t1 >12) 
      { 
       // some code here 
      } 

     } 

    </script> 

在這裏,在功能T_2()中,如果條件是靜態的。但是我可以通過t_1()嗎?比如,t_2()中的條件取決於t_1()中的t6值。

我可以通過if條件代碼或t1中可以在t2中執行的任何動態變量嗎?

+1

在你的函數之外,你可以聲明一個變量?像var t6 ='';然後將其設置在t_1函數中,如t6 ='something' –

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/function –

+0

您可以傳遞't6'作爲參數調用't_2(d1,d2,d3)'並在't2'中使用它。 – Shrabanee

回答

0

您可以創建匿名函數並將其作爲參數傳遞。

function t1() 
{ 
    var x = 17; 
    var f = function(a) { return a > x; }; // value of x is captured here inside f 
    //       ^^^^^^ here is expression you can pass around 
    t2(f); 
} 

function t2(f) 
{ 
    var y = 4; 
    if(f(x)) { // -> if(f(4)) -> if(4>17) 
     ... 
    } 
} 
+0

謝謝,它的工作。 –

-1

eval()可能是一個可能的解決方案。例如,

function t_1(){ 
    var a=5, b=10; 
    //make you statement a string, any type of statement can be made string 
    var c = "a+b"; 
    t_2(a,b,c); 

} 

function t_2(a,b,c){ 
    var res = eval(c); // here c can be any js statements in String form 
} 

的eval()應具有較高的預防措施來使用,因爲它可以使我們的應用程序容易受到黑客攻擊。當我們從用戶那裏獲得輸入時,應該非常有選擇性地使用它。

相關問題