使用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 = ''
}
}
似乎很多时候需要做的是检查变量是否为空以给它一个默认值。
答案 0 :(得分:25)
function foo(bar) {
bar = bar || 'default';
}
(或者,如果您只使用bar
一次,则可以将该用法替换为bar || <default value>
并跳过中间分配。)
答案 1 :(得分:4)
function someFunction(data){
data = data || 'my value';
}
唯一的问题是0
,false
和undefined
的处理方式相同:
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
目标。