【问题标题】:Use of `?` in a JavaScript timer function return [duplicate]在 JavaScript 计时器函数中使用“?”返回 [重复]
【发布时间】:2014-06-03 00:13:13
【问题描述】:

所以我偶然发现了一些 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){} 吗?

【问题讨论】:

  • 这就是所谓的三元运算符。见:msdn.microsoft.com/en-us/library/ie/be21c7hw(v=vs.94).aspx
  • 在您的示例中,没有任何“多个参数”需要理解。
  • 从技术上讲,它被称为conditional operator;人们有时将其称为三元运算符,因为它是大多数语言中唯一的三元(三参数)运算符,许多书籍将其称为“三元?:”运算符 - 应将其理解为“三元条件运算符”。跨度>
  • Well timer(parseInt(sec/60, 10)) 正在发送两个参数?
  • 否,parseInt 返回一个值,该值将发送给参数。

标签: javascript


【解决方案1】:

variable > 9 ? variable : "0" + variable; 是一个三元表达式。 variable > 9 被评估,如果它是真的,则返回variable,否则返回"0" + variable。将其视为带有赋值的 if-else 语句的单行替代。

【讨论】:

  • 其实?:是操作符,整个字符串就是一个表达式。
【解决方案2】:

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

condition ? resultIfTrue : resultIfFalse

在您的情况下,如果变量

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

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

      和

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

      【讨论】:

      • 也可以像这样添加零:var result = "00".slice("6".length) + "6");
      • 谢谢!我想我会更喜欢使用后者。第一个对我来说看起来不太好。
      • 也和variable > 9 && variable || "0" + variable一样
      • 需要注意的是,如果通过google的闭包编译器运行if|else语句,会输出一个三元运算符。
      猜你喜欢
      • 1970-01-01
      • 2013-10-23
      • 1970-01-01
      • 2018-09-22
      • 2017-07-31
      • 1970-01-01
      • 2021-10-30
      • 1970-01-01
      • 2016-06-01
      相关资源
      最近更新 更多