Javascript 函数和可选参数

标签 javascript jquery arguments

我有两个几乎相同的 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/

相关文章:

javascript - 单击时如何更改按钮中的文本?

java - 使用 Spring3 mvc 时出现 ajax 问题。返回对象列表时出现 406 错误

javascript - 使用 javascript 从 json 对象动态添加数据行?

javascript - 从网页在服务器上执行 shell 脚本

JavaScript:通过传递的参数从数组中删除元素

javascript - 替换innerHTML会停止其他脚本的工作

java - Paths.get(args[0]) 不起作用

javascript - 如何在不更改原始参数数组的情况下操作传递给函数的 JavaScript 数组?

python - 如何在方法调用中的关键字 arg 之后使用非关键字 arg?

javascript - 多选输入 - 查找添加和删除项目 Javascript