Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.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中ajax调用中多个三元运算符的语法_Javascript_Jquery_Ajax_Ternary Operator - Fatal编程技术网

javascript中ajax调用中多个三元运算符的语法

javascript中ajax调用中多个三元运算符的语法,javascript,jquery,ajax,ternary-operator,Javascript,Jquery,Ajax,Ternary Operator,我试图在javascript ajax调用中使用一些if语句,我觉得这应该是可能的,只是可能我的语法错了。我正在尝试创建以下计划部分: $.ajax({ type : 'POST', name : 'Submitting Request', url : '/breadcrumbs/crumb', dataType: 'json',

我试图在javascript ajax调用中使用一些if语句,我觉得这应该是可能的,只是可能我的语法错了。我正在尝试创建以下计划部分:

$.ajax({
                type    :  'POST',
                name    :  'Submitting Request',
                url     :   '/breadcrumbs/crumb',
                dataType: 'json',
                data    : {
                    parameters  : paramsObj,
                    schedule: {       paramsObj.isfirst   ? firstSched
                                    : paramsObj.issecond  ? secondSched
                                    : paramsObj.isthird   ? thirdSched
                              }
                          },
            success  : function(){},
            error   : function(jqXHR, status, error) {}
       });
我不断收到“Uncaught SyntaxError:Unexpected token”(未捕获的SyntaxError:Unexpected token)

             data   : {
                parameters  : paramsObj,
                schedule: {       paramsObj.isfirst    ? firstSched
                                : paramsObj.issecond ? secondSched
                                : paramsObj.isthird ? thirdSched
                          }
                      },
特别是对于schedule,这就是我尝试使用三元运算符所做的:

if( paramsObj.isfirst === true) { schedule = firstSched}
if( paramsObj.issecond === true){ schedule = secondSched}
if( paramsObj.isthird === true) { schedule = thirdSched}

有人知道我做错了什么吗?

只知道相关字段:

schedule: paramsObj.isfirst ? firstSched : 
    paramsObj.issecond ? secondSched :
    paramsObj.isthird ? thirdSched : undefined
$.ajax({
    type: 'POST',
    name: 'Submitting Request',
    url: '/breadcrumbs/crumb',
    dataType: 'json',
    data: {
        parameters: paramsObj,
        schedule: paramsObj.isfirst ? firstSched : 
            paramsObj.issecond ? secondSched :
            paramsObj.isthird ? thirdSched : undefined,
        success: function(){},
        error: function(jqXHR, status, error) {}
   });
全部通话

schedule: paramsObj.isfirst ? firstSched : 
    paramsObj.issecond ? secondSched :
    paramsObj.isthird ? thirdSched : undefined
$.ajax({
    type: 'POST',
    name: 'Submitting Request',
    url: '/breadcrumbs/crumb',
    dataType: 'json',
    data: {
        parameters: paramsObj,
        schedule: paramsObj.isfirst ? firstSched : 
            paramsObj.issecond ? secondSched :
            paramsObj.isthird ? thirdSched : undefined,
        success: function(){},
        error: function(jqXHR, status, error) {}
   });
注意


正如其他人所指出的,链接ternaries可能很难阅读,这可能会导致bug和维护问题。我个人并不介意将它们链接起来,只要它们是按行划分的,如图所示,这样它们就很容易理解……

只需相关字段即可:

schedule: paramsObj.isfirst ? firstSched : 
    paramsObj.issecond ? secondSched :
    paramsObj.isthird ? thirdSched : undefined
$.ajax({
    type: 'POST',
    name: 'Submitting Request',
    url: '/breadcrumbs/crumb',
    dataType: 'json',
    data: {
        parameters: paramsObj,
        schedule: paramsObj.isfirst ? firstSched : 
            paramsObj.issecond ? secondSched :
            paramsObj.isthird ? thirdSched : undefined,
        success: function(){},
        error: function(jqXHR, status, error) {}
   });
全部通话

schedule: paramsObj.isfirst ? firstSched : 
    paramsObj.issecond ? secondSched :
    paramsObj.isthird ? thirdSched : undefined
$.ajax({
    type: 'POST',
    name: 'Submitting Request',
    url: '/breadcrumbs/crumb',
    dataType: 'json',
    data: {
        parameters: paramsObj,
        schedule: paramsObj.isfirst ? firstSched : 
            paramsObj.issecond ? secondSched :
            paramsObj.isthird ? thirdSched : undefined,
        success: function(){},
        error: function(jqXHR, status, error) {}
   });
注意


正如其他人所指出的,链接ternaries可能很难阅读,这可能会导致bug和维护问题。我个人并不介意将它们链接起来,只要它们按行分开,如图所示,这样它们就很容易理解……

嵌套的ternaries可能很难阅读。我建议将其改写为一个更具可读性的版本:

schedule: (function() {
    if (paramsObj.isfirst)
        return firstSched;
    else if (paramsObj.issecond)
        return secondSched;
    else if (paramsObj.isthird)
        return thirdSched;
    else
        return undefined;
})();

嵌套的三元组可能很难阅读。我建议将其改写为一个更具可读性的版本:

schedule: (function() {
    if (paramsObj.isfirst)
        return firstSched;
    else if (paramsObj.issecond)
        return secondSched;
    else if (paramsObj.isthird)
        return thirdSched;
    else
        return undefined;
})();

为了你未来的自我和同事,不需要表达式周围的
{}
,不要这样做!很难读懂。嵌套的三元运算符是邪恶的。将代码移出一个单独的块,甚至一个函数,然后使用if/else或switch。推荐阅读:我认为更可读的方法是使用一个立即调用的函数表达式。有关详细信息,请参阅。表达式周围的
{}
是不需要的。为了您未来的自我和同事,请不要这样做!很难读懂。嵌套的三元运算符是邪恶的。将代码移出一个单独的块,甚至一个函数,然后使用if/else或switch。推荐阅读:我认为更可读的方法是使用一个立即调用的函数表达式。请参阅以了解详细信息。请注意-您的代码与他所说的他正在尝试执行的代码不完全相同。。。例如,如果这三个都是假的,那么他的代码不应该将日程表设置为thirdSched,但你的会…@sethflowers谢谢我没有仔细阅读——我修正了它,删除了我的答案中与你的答案重复的部分。谢谢你的回答!我最终使用这个作为我的最终解决方案,但必须像Seth flowers指出的那样修改它,并且您在回答中进行了更正。你们俩都帮了大忙!请注意-您的代码与他所说的不完全相同。。。例如,如果这三个都是假的,那么他的代码不应该将日程表设置为thirdSched,但你的会…@sethflowers谢谢我没有仔细阅读——我修正了它,删除了我的答案中与你的答案重复的部分。谢谢你的回答!我最终使用这个作为我的最终解决方案,但必须像Seth flowers指出的那样修改它,并且您在回答中进行了更正。你们俩都帮了大忙!非常感谢。我之所以选择这个作为解决方案,是因为我的问题是关于三元版本的,但由于对三元版本的响应如此之大,我最终选择了dave的答案的修改版本作为我的代码。谢谢!我选择这个作为解决方案,因为我的问题是关于三元版本的,但由于对三元版本的响应如此之大,我最终选择了dave的答案的修改版本作为我的代码。