【问题标题】:What does ? : mean in Javascript? [duplicate]有什么作用? :在Javascript中是什么意思? [复制]
【发布时间】:2011-05-09 07:30:11
【问题描述】:

这行代码有什么作用?

len = ( s.length>t.length ) ? s.length : t.length

【问题讨论】:

  • 这是一个内联条件。 <condition> ? <true value> : <false value> 并支持多种语言。

标签: javascript


【解决方案1】:

它将变量len设置为字符串s的长度,或者字符串t的长度,取决于哪个更长。

【讨论】:

  • 你能确定 len 是全局的吗?
  • 不,你不能。如果前一行声明了var len,那么它是本地的。
  • @Joe 好的,点。删除它。
【解决方案2】:

如果s.length 大于t.length 则设置len = s.length 否则set len = t.length

【讨论】:

    【解决方案3】:

    那是使用条件运算符,它也被称为三元,因为它需要三个操作数。

    请参阅https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special_Operators/Conditional_Operator 了解更多信息。

    您也可以在 PHP、C、C++ 和其他语言中找到具有相同语法的这种结构。

    【讨论】:

      【解决方案4】:

      相当于:

      var len=0;
      if(s.length>t.length)
        len= s.length;
      else
        len=t.length;
      

      所以这只是一个简短的方法来做 if else。

      【讨论】:

      • 其实原版没有var,所以这不等价——你声明的是一个局部变量,而原版可能一直在使用全局变量。
      • 可能有一个全局变量,但也可能没有,它可能在一个函数内部,而全局变量不是最佳实践编程,所以这是等效的最佳实践。
      【解决方案5】:

      它正在这样做:

      if (s.length > t.length) {
          len = s.length;
      } else {
          len = t.length;
      }
      

      【讨论】:

      • 原版没有var,所以这不等效——您声明的是一个局部变量,而原版可能使用的是全局变量。
      【解决方案6】:

      这相当于使用ternary conditional operator 的len = Math.max( s.length, t.length );。

      【讨论】:

        【解决方案7】:

        ?: 是三元运算符。它根据条件返回一个值。

        x = (condition)?(if-true):(if-false)
        

        所以如果条件为真,x 就是 if-true 部分的值,如果它为假,那么 x 就是 if-false 部分的值。

        If 等价于 Corv1nus 之前所说的。

        【讨论】:

          【解决方案8】:

          len 将被分配 s 或 t 的长度,这取决于哪个具有更大的长度

          【讨论】:

            【解决方案9】:

            如果 s 的长度大于 t 的长度,则将“len”设为 s 的长度。 如果 s 的长度小于或等于 t 的长度,则将“len”设为 t 的长度。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2015-07-15
              • 2018-07-17
              • 2011-04-16
              • 2014-07-28
              • 2014-01-23
              • 1970-01-01
              • 2011-05-10
              • 2021-08-29
              相关资源
              最近更新 更多