我正在查看此代码,并提出了一些问题。我在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。我不太确定操作数是什么意思。
任何见解?
答案 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)
您似乎需要重新使用条件语句:
使用带有单个语句的if是有意义的,尽管语句通常被推送到下一行并缩进以便于阅读。
使用三元if是可以的,只要它不包含使可读性成为挑战的嵌套表达式。