我是nodejs.
的新手,试图在nodejs代码中执行三元运算
这是使用
if (filter.serverId != "0") {// filter server details from report
filterJson(report, report[items].server, filter.serverId, function ( filterdData) {
report = filterdData;
});
}else report = report;
我可以写这样的代码吗
report = filter.serverId != "0" ? filterJson(report, report[items].server, filter.serverId, function (filterdData) {
report = filterdData;
}); : report
答案 0 :(得分:3)
简而言之,您没有理由使用三元运算符。下面有完整的解释和解决方案。
两个代码片段说的是不同的东西。第一个有两个分配。如果条件为真,它在匿名函数中report = filterdData
,否则将report
分配给report
。
第二个代码段有三个分配。它将在匿名函数中执行report = filterdData
条件为真,然后它将filterJson
的结果分配给报告(我猜测filterJson返回undefined)。如果条件为false,则会再次将report
重新分配给report
。
首先,你的"否则"什么也没做。它只是将report
分配给自己。摆脱它。其次,您要将结果filterJson
分配给report
,但这不是您想要使用filterJson
的方式(我假设)。
这将做你想要的。
if (filter.serverId != "0") {
filterJson(report, report[items].server, filter.serverId, function (filterdData) {
report = filterdData;
});
}
如果你只是想摆脱花括号,你可以这样做,但保持它们被认为是好的风格。
if (filter.serverId != "0")
filterJson(report, report[items].server, filter.serverId, function (filterdData) {
report = filterdData;
});
三元运算符在这里真的不可用。
答案 1 :(得分:3)
您可以使用三元操作,但在这种特殊情况下,它可能无法正常工作。 (除了filterJson调用后的分号,三元组应该省略为有效代码。)
在这种情况下,filterJson方法似乎在回调函数中设置report = filterdData
。我们可以假设filterJson没有向outer语句返回任何内容,即如果你已经完成report = filterJson(...)
,它将与report = undefined
具有相同的结果。如果filterJson同步调用回调函数,它将在外部语句之前执行,并且报告将暂时设置,只有在紧接之后被外部语句覆盖。
效果类似于:report = filterdData; report = undefined;