Javascript catchup undefined

时间:2012-12-04 20:48:03

标签: javascript

我用javascript构建了一个数组加载器。

Here the jsfiddle

当我直接点击最后一次时,我得到了未定义。我试图用这样的东西来抓住它

var lastWord = (function() {

            return function() {
            var resultWord = wordArray[--count % wordArray.length];
                if (typeof resultWord == "undefined")
                { 
                return false;
                }
                else 
                {
                return wordArray[--count % wordArray.length];
                }
            }
        }

}());

但是没有用,有什么建议吗?

2 个答案:

答案 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