我正在查看以下Javascript代码,尝试将其移植到另一种语言:
if (x>n) {return q} {return 1-q)
我不知道代码在做什么,但有人可以根据语法告诉我发生了什么吗?在最后一组{}之前是否有隐含的“其他”?也就是说,如果x> n,则返回q,否则返回1-q?
如果有帮助,这里是嵌入的代码行:
if(x>9000 | n>6000) { var q=Norm((Power(x/n,2/5)+1/(8*n)-1)/Sqrt(9/(2*n)))/3; if (x>n) {return q}{return 1-q} }
感谢
答案 0 :(得分:2)
基本上是这样的:
if (x>n)
return q;
else
return 1-q;
答案 1 :(得分:2)
没有隐含的'else',下一组括号只是定义了另一个复合语句。在这种情况下,它就像'else',但只是因为'if'部分带有一个return语句。
答案 2 :(得分:2)
只有隐含的else,因为与if
语句配对的块从函数返回。您发布的代码等同于:
if(x > n)
{
return q;
}
return q + 1;
你只能获得if / else-like行为,因为第二个语句只能在第一个语句不能执行时执行(因为第一个语句将从函数返回,控制永远不会到达第二个)。
这个糟糕的代码!为了可读性/可维护性/健全性,它应该以这些更可持续的格式之一编写:
if(x > n) {return q;}
else {return q + 1;}
或者:
return (x > n)? q : q + 1;
希望有所帮助!
答案 3 :(得分:1)
有一个暗示的其他。如果x> n,则函数返回q。否则,它将转到下一个return语句并返回1-q。
答案 4 :(得分:1)
那段代码真的......
if (x > 9000 | n > 6000) {
var q = Norm((Power(x / n, 2 / 5) + 1 / (8 * n) - 1) / Sqrt(9 / (2 * n))) / 3;
if (x > n) {
return q
} {
return 1 - q
}
}
有人认为不可读的代码是个好主意,或者他们使用了一个糟糕的小人物。
答案 5 :(得分:1)
return q
之后的{}块不是必需的。没有任何隐含的其他声明,只是如果它通过if语句并返回q,接下来的内容将不再执行,否则,它将会执行。然后就没有必要在那里放一个。