我想知道以下函数中action();
到底做了什么:
variable a
需要明确的代码:
function c(a) {
var b = new Date;
return Math.round(b.getTime() / 1e3 + (a ? a : 0))
}
只想知道突出显示文本的逻辑是什么。
答案 0 :(得分:1)
如果a
为undefined
或false
或null
或NaN
,则会返回0
,否则会返回{{1}的值}}
让我们假设
a
并且
var someVar = 23;
function c(a) {
return a ? a : 0; //Also true for negative values
}
c(someVar); //will return 23
并且
var someVar = -22;
c(someVar); //will return -22
和
var someVar = false;
c(someVar); //will return 0
答案 1 :(得分:1)
你可能想要使用大胆的风格,不是吗?
声明x> 5? true:false是if ... else语句的缩短版本。你把声明放在“?”之前。 “:”分隔if和else部分。如果该语句为真,那么:before之前的部分,如果为false则触发,然后是之后的部分。因为javascript喜欢将任何内容转换为布尔值,所以您拥有的语句与if (a > 0) { b = a } else { b = 0}
相同
如果您想了解有关这些陈述的更多信息,请搜索ternary operators
答案 2 :(得分:1)
这两行
var b = new Date;
return Math.round(b.getTime() / 1e3 + (a ? a : 0))
也可以写成(为了更好的可读性)
var b = new Date;
var c = b.getTime() / 1e3 ; // 1e3 is 1000, so c is basically number of seconds since 1970
if ( !a ) //if a is either undefined, null or false
{
a = 0;
}
return Math.round(c+a); //now c+a is adding these seconds to the paramter you have passed
因此,此函数基本上将自1970年以来的秒数传递给您传递的值。
答案 3 :(得分:0)
“?:”被称为三元运算符。它是if else
的快捷方式。例如,var b = a ? a : 0
相当于:
var b;
if(a){
b = a;
}else{
b = 0;
}
另外,为了清楚起见,您的代码遗漏了()和;这是一个正确的版本:
function c(a) {
var b = new Date();
return Math.round(b.getTime() / 1e3 + (a ? a : 0));
}
请查看this question以获取进一步说明。
答案 4 :(得分:0)
if(a){
return a;
}
else{
return 0;
}