使用`?`在JavaScript定时器函数返回中



所以我偶然发现了一些Javascript计时器的例子,有一个函数,它在其中输入一个数字,然后函数返回时间:

function timer(variable){
   return variable > 9 ? variable : "0" + variable;
}

整个代码看起来像这样:

var sec = 0;
function timer(variable){
    return variable > 9 ? variable : "0" + variable;
}
setInterval(function(){
    $("#time-id").val("Minutes: "+timer(parseInt(sec/60, 10))+" Seconds: "+timer(++sec%60));
}, 1000);

是的,setInterval函数对我来说很清楚,但关于timer()

?在其中有什么用途?如果我给了它多个参数,它怎么能理解呢?它不应该这样标记吗:timer(variable1, variable2){}

Timer正在格式化时间,因此如果是6:05,则显示为6:05,而不是6:5

return variable > 9 ? variable : "0" + variable;

与相同

if ( variable > 9 ) {
    return variable
} else {
    return "0" + variable
}

?:是许多现代语言共享的运算符。这是if测试的快捷方式。结构如下:

condition ? resultIfTrue : resultIfFalse

在您的情况下,如果变量<10.你可以把它读成:

if (variable > 9)
     do nothing
else
     add a "0" before

意思是,如果variable是10或更大,它只会回显variable;否则,它会在开头添加一个0,使其仍然为两位数。

variable > 9 ? variable : "0" + variable;是一个三元表达式。计算variable > 9,如果是真的,则返回variable,否则返回"0" + variable。可以将它看作是一个带有赋值的if-else语句的一行替换。

最新更新