Javascript函数作为参数传入

时间:2016-06-01 05:18:36

标签: 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值。

我可以从t1传递if条件代码或任何可以在t2中执行的动态变量吗?

2 个答案:

答案 0 :(得分: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)
        ...
    }
}

答案 1 :(得分:-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(),因为它可以使我们的应用程序容易受到黑客攻击。如果我们从用户那里获得输入,应该非常有选择地使用它。