Javascript 有条件地定义对象中的参数
我使用的是framework7日历,在声明日历时,我需要根据php动态生成的输入中的当前日期值设置该值。这是可行的,但问题是当没有设置日期时,空字符串不应该将日期定义为1969年12月31日。我曾尝试基于if语句发送空值,但它也不起作用。函数工作的唯一方式是设置了有效日期或未完全设置参数。问题是如何更改以下内容以仅在value参数不为空或null时声明该参数Javascript 有条件地定义对象中的参数,javascript,object,syntax-error,declaration,Javascript,Object,Syntax Error,Declaration,我使用的是framework7日历,在声明日历时,我需要根据php动态生成的输入中的当前日期值设置该值。这是可行的,但问题是当没有设置日期时,空字符串不应该将日期定义为1969年12月31日。我曾尝试基于if语句发送空值,但它也不起作用。函数工作的唯一方式是设置了有效日期或未完全设置参数。问题是如何更改以下内容以仅在value参数不为空或null时声明该参数 if($('input[name=session-date]').val()!=""){ sessionDate
if($('input[name=session-date]').val()!=""){
sessionDate = Date.parse($('input[name=session-date]').val());
alert("sessionDate set");
} else {
sessionDate = null;
alert("sessionDate NOT set");
}
//define call to calendar function with parameters
var calendarInline = myApp.calendar({
value: [sessionDate],
//etc.,
});
我试过:
if($('input[name=session-date]').val()!=""){
sessionDate = Date.parse($('input[name=session-date]').val());
alert("sessionDate set");
} else {
sessionDate = null;
alert("sessionDate NOT set");
}
//define call to calendar function with parameters
var calendarInline = myApp.calendar({
if(sessionDate){
value: [sessionDate],
}
//etc.,
});
您不能在对象定义中有条件地设置对象参数,但可以在
myApp.calendar
中执行IIFE操作,返回您的对象,如下所示:
var calendarInline = myApp.calendar((function() {
var obj = {
//values...
}
if(sessionDate) {
obj.value = [sessionDate];
}
return obj;
})())
或者,您可以在初始化
calendarInline
之前创建并有条件地构造对象,然后将对象传递到myApp.calendar()
您不能在对象定义中有条件地设置对象参数,但您可以在myApp.calendar
中执行IIFE,返回您的对象,像这样:
var calendarInline = myApp.calendar((function() {
var obj = {
//values...
}
if(sessionDate) {
obj.value = [sessionDate];
}
return obj;
})())
或者,您可以在初始化
calendarInline
之前创建并有条件地构造对象,然后将对象传递给myApp.calendar()
有两种方法可以使用默认值调用函数。在ES6中,参数有默认值;在ES5中,可以使用一些逻辑短路。因此,首先创建一个包装器函数来调用库方法
在ES6中,你可以做喜欢的事
var celendarCall = function(sd = myBirthDay) {myApp.calendar({value:[sd],...})},
calendarInline = calendarCall(sessionDate);
因此,如果您不为calendarCall
提供参数,它将使用myBirthDay
作为默认值
或者在ES 5中,您也可以这样做
var celendarCall = function(sd) {myApp.calendar({value:[sd],...})},
calendarInline = calendarCall(sessionDate || myBirthDay);
因此,如果
sessionDate
是undefined
或任何错误,它将使用mybirth
作为调用calendarCall
函数的默认参数。有两种方法可以使用默认值调用函数。在ES6中,参数有默认值;在ES5中,可以使用一些逻辑短路。因此,首先创建一个包装器函数来调用库方法
在ES6中,你可以做喜欢的事
var celendarCall = function(sd = myBirthDay) {myApp.calendar({value:[sd],...})},
calendarInline = calendarCall(sessionDate);
因此,如果您不为calendarCall
提供参数,它将使用myBirthDay
作为默认值
或者在ES 5中,您也可以这样做
var celendarCall = function(sd) {myApp.calendar({value:[sd],...})},
calendarInline = calendarCall(sessionDate || myBirthDay);
因此,如果
sessionDate
是undefined
或任何错误,它将使用mybirth
作为默认参数来调用calendarCall
函数。不能吗?我确实。。。它是有效的。你是否有任何不允许这样做的参考资料,或者有任何不允许这样做/不起作用的浏览器版本的示例?@amaster507正如Felix在对你的回答的评论中所说,你所使用的并不符合你的想法。ES6简明方法()是使您能够做到这一点的功能(我在浏览器中显然没有启用此功能)。答案保持不变。你不能吗?我确实。。。它是有效的。你是否有任何不允许这样做的参考资料,或者有任何不允许这样做/不起作用的浏览器版本的示例?@amaster507正如Felix在对你的回答的评论中所说,你所使用的并不符合你的想法。ES6简明方法()是使您能够做到这一点的功能(我在浏览器中显然没有启用此功能)。答案没有改变。