1

有人介意将这行三元代码转换为if/then语句吗?if我理解三元,但是当我转换为/时无法消除语法错误then。这是我必须借用的唯一作业,我想把它写成if/then以便我可以评论它并自己更好地理解它。

原来的:

return n == null || isNaN(n) ? 0 : n;

我的尝试:

return n == null || if(isNaN(n)){return 0;}else{return n;}
4

6 回答 6

1
if (n == null || isNaN(n)) {
  return 0;
} else {
  return n;
}
于 2012-05-30T07:05:12.937 回答
0

您必须移动returnif 和 else 并为 if 和 else 单独设置一个:

if(n == null || isNaN(n)){
    return 0;
}else{
    return n;
}
于 2012-05-30T07:03:56.423 回答
0
if (n == null || isNaN(n))
    return 0;
else 
    return n;
于 2012-05-30T07:04:14.623 回答
0

这就是我认为它正在做的事情:

if (n == null || isNan(n))
   return 0;
else
   return n;

||运算符的优先高于?运算符。

于 2012-05-30T07:04:41.873 回答
0

你需要在这里应用一些语法

其他四个答案给出了正确的源代码,我不想重复了。

于 2012-05-30T07:15:17.083 回答
0

问题是 return 必须是它出现的任何行的第一个语句(根据 ECMA 规范)。

如果您首先添加括号,则代码更容易翻译(n == null || (isNaN(n) ? 0 : n)给出不同的结果并且不等同于 javascript 对未加括号的代码的默认解析)

return (n == null || isNaN(n)) ? 0 : n;

这相当于

if (n == null || isNaN(n)) {
    return 0;
} else {
    return n;
}
于 2012-05-30T07:16:10.170 回答