不理解此函数调用中的参数

时间:2015-01-21 18:46:53

标签: java javascript

这个函数应该有两个参数,但是包含的字符我不明白它们的含义。 “?”的价值是多少?这个函数中的两个参数是什么,我知道panel.id就是其中之一。任何能够解释它们的库的链接?谢谢

setPanelType(panel.id, ((encType) ? PANEL_ST_ENC : PANEL_NORMAL))

此处发布的重复问题可能是在解释什么是“?”运营商是。但是我不确定它是否在函数参数调用中使用不同。这个问题与任何问题都不重复。

3 个答案:

答案 0 :(得分:3)

你已经遇到了一个名为“conditional operator”*的东西。这基本上是编写if语句的简短方法。

例如:

String var;
var = 1 > 0 ? "It's bigger than 0" : "It's 0 or smaller";

与:

相同
String var;
if(1 > 0){
    var = "It's bigger than 0";
}else{
    var = "It's 0 or smaller";
}

*它有时也称为“三元”运算符,但这并不完全正确。它是 “三元运算符”(接受三个操作数的运算符,就像乘法运算符*二进制运算符一样,因为它接受两个操作数),但理论上可能还有其他操作数。事实上,我认为它是Java或JavaScript中唯一的三元运算符(至少目前为止)。

答案 1 :(得分:0)

此语法是Javascript中条件操作的简写。

(条件)? (真实行动):(假动作)

相关:JavaScript ternary operator example with functions

答案 2 :(得分:0)

'?'表示如上所述的三元运算符,encType是一个布尔变量。

setPanelType(panel.id, ((encType) ? PANEL_ST_ENC : PANEL_NORMAL))

等于:

if (encType)
   setPanelType(panel.id, PANEL_ST_ENC))
else 
  setPanelType(panel.id, PANEL_NORMAL))