Javascript / Jquery - 在函数中设置默认值

时间:2011-10-15 06:57:20

标签: javascript jquery

使用javascript / jquery有没有办法在函数中没有传递值的情况下将变量设置为默认值?例如

function someFunction(data1,data2)
{


}

如果data1或data 2为空,则会给出一个未定义的值。在PHP我可以做到这一点:

function somefunction(data1 = '',data2 = '')
{


}

因此,如果没有传递变量,或者数据1或数据2,则默认为''。在JS / Jquery中,我是否必须检查是否有值并相应地设置它?

function someFunction(data1,data2)
{

if(!data1) {

data1 = '';

}

if(!data2) {

data2 = ''

}

}

似乎很多时候需要做的是检查变量是否为空以给它一个默认值。

4 个答案:

答案 0 :(得分:25)

function foo(bar) {
    bar = bar || 'default';
}

(或者,如果您只使用bar一次,则可以将该用法替换为bar || <default value>并跳过中间分配。)

答案 1 :(得分:4)

function someFunction(data){
    data = data || 'my value';
}

唯一的问题是0falseundefined的处理方式相同:

someFunction(1); // data = 1;
someFunction(-1); // data = -1;
someFunction(); // data = 'my value';
someFunction(0); // data = 'my value';
someFunction(false); // data = 'my value';

答案 2 :(得分:3)

您可以使用:

function foo(optionalArg) {
    optionalArg = optionalArg|| 'defaultValue';
}

只要您从未将值传递给参数。 如果传递了OptionalArg,则此逻辑将失败 试试这个:

function foo(optionalArg) {
    optionalArg = (typeof optionalArg === "undefined") ? "defaultValue" : optionalArg;
}

答案 3 :(得分:2)

您可以使用jquery的extend方法,但在代码中定义默认值,如下所示

$.fn.myPlugin = function (settings) {
    var options = jQuery.extend({
        name: "MyPlugin",
        target: document,
        onOpen: function () {},
        onClose: function () {},
        onSelect: function () {}
    }, settings);
}

现在你可以做到

$("#divId").myPlugin({
    target: $("#div2")
};

现在将覆盖默认值中使用元素document定义的having div2 as id目标。