javascript中ajax调用中多个三元运算符的语法
我试图在javascript ajax调用中使用一些if语句,我觉得这应该是可能的,只是可能我的语法错了。我正在尝试创建以下计划部分: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',
$.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的答案的修改版本作为我的代码。