Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有条件地定义对象中的参数_Javascript_Object_Syntax Error_Declaration - Fatal编程技术网

Javascript 有条件地定义对象中的参数

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

我使用的是framework7日历,在声明日历时,我需要根据php动态生成的输入中的当前日期值设置该值。这是可行的,但问题是当没有设置日期时,空字符串不应该将日期定义为1969年12月31日。我曾尝试基于if语句发送空值,但它也不起作用。函数工作的唯一方式是设置了有效日期或未完全设置参数。问题是如何更改以下内容以仅在value参数不为空或null时声明该参数

    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简明方法()是使您能够做到这一点的功能(我在浏览器中显然没有启用此功能)。答案没有改变。