我有一个基本的for循环,我确定了一个名为'left'
的变量的值'right'
或animationDirection
。
如何在循环之前初始化此变量,以便可以在其中定义?
我尝试使用undefined
将其初始化为var animationDirection = undefined;
,但javascript linter不赞成这种做法。
我已经确定了下面的代码,它在循环逻辑中定义了animationDirection,但这似乎是一个坏主意,因为我用var
初始化变量两次。
关于如何更好地定义变量的任何想法?
for (var i = 0; i < $selected.length; i++) {
if (i < ($selected.length / 2)) {
var animationDirection = 'left';
} else {
animationDirection = 'right';
}
$($selected[i])
.css(animationDirection, animationOffset)
.velocity(animation, animationConfig);
}
答案 0 :(得分:1)
像这样:
var animationDirection,
i;
for (i = 0; i < $selected.length; i += 1) {
if (i < ($selected.length / 2)) {
animationDirection = 'left';
} else {
animationDirection = 'right';
}
$($selected[i])
.css(animationDirection, animationOffset)
.velocity(animation, animationConfig);
}
Douglas Crockford的JSLint要求变量在函数的顶部声明(不确定你使用的是什么lint)。
这是一个更简洁的方法,它避免了for
- 循环语义(假设这里$selected
是一个jQuery对象)并且使得变量声明的位置更加简单:
$selected.each(function(i, e) {
var animationDirection = (i < ($selected.length / 2)) ? "left" : "right";
$(e).css(animationDirection, animationOffset)
.velocity(animation, animationConfig);
});
答案 1 :(得分:0)
怎么样?
for (var i = 0; i < $selected.length; i++) {
$($selected[i])
.css(i < ($selected.length / 2) ? 'left': 'right' , animationOffset)
.velocity(animation, animationConfig);
}