试图找出jquery语法

时间:2011-11-05 16:17:21

标签: javascript jquery variables

我正在查看此代码,并提出了一些问题。我在jquery基础手册和谷歌上做了一些挖掘,但没有找到一个直截了当的答案。

这是完整的代码

function slideSwitch()
{
    var $active = $('#slideshow IMG.active');

    if ( $active.length == 0 ) $active = $('#slideshow IMG:last');

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


    $active.addClass('last-active');

    $next.css({opacity: 0.0})
         .addClass('active')
         .animate({opacity: 1.0}, 1000, function() {
             $active.removeClass('active last-active');
          });
}

第一件让我感到震惊的是,他用括号做了一个内联if语句,这很酷,我不知道你能做到这一点。但是,它是否遵循良好的编码标准或无关紧要?

也是他宣布var $ next的下一行。我从未见过有这些条件的变量。我猜他说要输入$ active.next(),如果长度是0,那么$ active.next()将成为幻灯片放映中的第一个img。我不太确定操作数是什么意思。

任何见解?

2 个答案:

答案 0 :(得分:3)

  

第一件让我感到震惊的是,他使用括号

创建内联if语句

我认为你的意思是大括号{}

  

这很酷,我不知道你能做到这一点。但是,它是否遵循良好的编码标准或无关紧要?

通常认为代码风格较差。以后很容易为if分支添加更多代码而没有意识到使用了无括号语法。

JSLint会抱怨这一点。

  

也是他宣布var $ next的下一行。我从未见过有这些条件的变量。

那是conditional (ternary) operator

return condition ? expr1 : expr2

相当于:

if (condition) {
    return expr1;
} else {
    return expr2;
}

所有这些都是JavaScript。它与jQuery库无关。

答案 1 :(得分:2)

您似乎需要重新使用条件语句:

  1. 标准if在条件评估为true /非零时执行语句。声明可以只是 - 一个声明,或括号内的几个声明。
  2. ternary conditional expression用于分配目的。它需要一个条件,对它进行求值,如果它的计算结果为真/非零,它将返回?之后的第一个表达式。如果不是,则返回:。
  3. 之后的表达式

    使用带有单个语句的if是有意义的,尽管语句通常被推送到下一行并缩进以便于阅读。

    使用三元if是可以的,只要它不包含使可读性成为挑战的嵌套表达式。