基本的Javascript if / else语句问题

时间:2011-02-17 00:34:06

标签: javascript

我正在查看以下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} }

感谢

6 个答案:

答案 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,接下来的内容将不再执行,否则,它将会执行。然后就没有必要在那里放一个。