这个变量在这个函数中将如何做:

时间:2016-01-25 07:54:18

标签: javascript function datetime

我想知道以下函数中action();到底做了什么:

variable a

需要明确的代码:

function c(a) {
    var b = new Date;
    return Math.round(b.getTime() / 1e3 + (a ? a : 0))
}

只想知道突出显示文本的逻辑是什么。

5 个答案:

答案 0 :(得分:1)

如果aundefinedfalsenullNaN,则会返回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;
}