我用javascript构建了一个数组加载器。
当我直接点击最后一次时,我得到了未定义。我试图用这样的东西来抓住它
var lastWord = (function() {
return function() {
var resultWord = wordArray[--count % wordArray.length];
if (typeof resultWord == "undefined")
{
return false;
}
else
{
return wordArray[--count % wordArray.length];
}
}
}
}());
但是没有用,有什么建议吗?
答案 0 :(得分:0)
第一次未定义的原因是因为wordArray中没有任何内容存在负面的缺陷。在点击更新之前没有“最后”字样。那有意义吗?点击一次更新后,它可以正常工作。
答案 1 :(得分:0)
尝试http://jsfiddle.net/ayQH2/2/
问题是模数运算符返回的符号是其第一个操作数的符号。所以,例如
(-17) % 12 // == -5 , not 7
这可能会起作用,并且不包括额外的函数包装器:
var nextWord = function() {
// silly work-around for negative modulus issue
var index = (++count % wordArray.length) + wordArray.length
return wordArray[index % wordArray.length];
};
var lastWord = function() {
// silly work-around for negative modulus issue
var index = (--count % wordArray.length) + wordArray.length
return wordArray[index % wordArray.length];
};
还有很多其他方法可以解决这个问题。也许更好的方法是确保count
永远不会逃脱正确的范围,做类似
count = (count == wordArray.length - 1) ? 0 : count++; // increment
count = (count == 0) ? wordArray.length - 1 : count--; // decrement