【问题标题】:Why is there no comparison statement in this javascript 'If... Else...' statement为什么这个 javascript 'If...Else...' 语句中没有比较语句
【发布时间】:2012-05-11 04:37:03
【问题描述】:

在下面的代码中

var $next =  $active.next().length ? $active.next()
        : $('#slideshow IMG:first');

'$active.next().length' 部分似乎没有比较任何东西,我不明白条件是如何确定为真或假的。

或者是说: 如果各种 $next 等于 $active.next().length 那么条件为真?

【问题讨论】:

标签: javascript conditional-statements if-statement


【解决方案1】:

在 javascript 中,任何表达式都可以转换为真值或假值,因此在比较位置有效。 javascript中为假的值是

  • false
  • 0
  • ""(空字符串)
  • null
  • undefined
  • NaN

在这种情况下,length 指的是一个数值,如果它的计算结果为0,那么它将被认为是虚假的。否则会是真的

【讨论】:

    【解决方案2】:

    如果length 属性等于0undefined(即$active 不是数组),则条件将为false

    【讨论】:

      【解决方案3】:

      如果$active.next().lengthtrue,表示有下一个元素,那么$next = $active.next()。否则$next = $('#slideshow IMG:first')? 运算符称为三元运算符。这是一个简短的if else

      【讨论】:

        【解决方案4】:

        这是一个三元比较,相当于:

        if($active.next().length) {
            $next = $active.next();
        }
        else {
            $next = $('#slideshow IMG:first');
        }
        

        所以条件基于 $active.next().length 应该返回一个零或更大的值。任何大于零的值,JavaScript 都会解释为真,零为假。

        【讨论】:

          【解决方案5】:

          您正在查看Ternary opertation,它是 If... Else... 的缩写,您在标题中提到过吗?

          所以你的陈述的长版本是;

          if($active.next().length){
           $next = $active.next();
          }else {
           $next = $('#slideshow IMG:first');
          }
          

          【讨论】:

            猜你喜欢
            • 2019-12-11
            • 2022-11-16
            • 2020-03-24
            • 1970-01-01
            • 2022-01-09
            • 1970-01-01
            • 1970-01-01
            • 2021-09-11
            • 1970-01-01
            相关资源
            最近更新 更多