我想传递一些代码行作为参数。
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中执行的动态变量吗?
答案 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(),因为它可以使我们的应用程序容易受到黑客攻击。如果我们从用户那里获得输入,应该非常有选择地使用它。