我有两个几乎相同的 javascript 函数,用于启动 jquery $.get 调用。函数的参数被传递给被调用的脚本。
问题是一组调用需要一个额外的参数,而另一组不需要。
为了实现这一点,我使用了我提到的两个几乎相同的 javascript 函数。他们在这里:
function process(url, domid, domain, scan_id)
{
$.get(url,
{
domain: domain,
scan_id: scan_id
},
function(data)
{
$(domid).html(data);
});
}
function process_type(url, domid, type, domain, scan_id)
{
$.get(url,
{
domain: domain,
type: type,
scan_id: scan_id
},
function(data)
{
$(domid).html(data);
});
}
如您所见,第二个函数仅接受一个名为“type”的附加参数,然后通过 $.get 调用传递该参数。
我想结合这两个函数,但我不确定如何在 $ 中传递的那个(数组/对象/{ } 中的任何内容(是的,javascript noob))中选择性地包含第三个参数.得到。
编辑只是想说.... 该死的,你们很好。 :D
最佳答案
javascript 中的所有参数都是可选的,您可以使用函数内部的参数数组来访问按顺序传递的参数,如下所示:
function myFunction(option1)
{
var option2 = arguments[1];
if(arguments[0] == option1)
alert("Happy Day, Option1 = " + option1 + ", Option2 = " + option2);
}
myFunction("Hello", "World");
产生:Happy Day,Option1 = Hello,Option2 = World
希望这说明您可以如何使用参数数组来改进一些代码。
function process_type(url, domid, domain, scan_id)
{
var myOptions = {
domain: domain,
scan_id: scan_id
};
if(arguments[4])
myOptions["type"] = arguments[4];
$.get(url, myOptions,
function(data)
{
$(domid).html(data);
});
}
然后你可以用最后一个参数作为可选类型来调用它,如果传递了参数,则使用它,如果没有,则省略它。
此外,由于实际参数首先是可选的,因此您还可以将名称添加到函数定义的末尾并使用相同的 if 但不是 arguments[4]
你会做if(type) myOptions["type"] = type;
function process_type(url, domid, domain, scan_id, type)
{
var myOptions = {
domain: domain,
scan_id: scan_id
};
if(type)
myOptions["type"] = type;
$.get(url, myOptions,
function(data)
{
$(domid).html(data);
});
}
此调用将包括类型
process_type("xxx", "xxx", "xxx", "xxx", "xxx");
不会调用的地方
process_type("xxx", "xxx", "xxx", "xxx");
关于Javascript 函数和可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/587496/