为什么这个`range`实现崩溃标签在chrome?

时间:2015-11-24 21:16:39

标签: javascript google-chrome

我写了这个范围函数:

function range(m,n) {
    var x = m
    var xs = [x]
    var op = (m <= n) 
            ? function (a,b) { return a+b }
            : function (a,b) { return a-b }

    while (x !== n) {
        var x = op(x)
        xs.push(x)
    }
    return xs
 }

...但是在调用它时会崩溃Chrome中的标签(linux 46.0.2490.86(官方版)(64位))

它给出了“aw,snap!”消息,以及“检查目标已断开”,但没有更具体的。

非常感谢。

1 个答案:

答案 0 :(得分:1)

您需要不同的计数功能

&#13;
&#13;
function range(m, n) {
    var x = m,
        xs = [x],
        op = m <= n ? function (a) { return a + 1; } : function (a) { return a - 1; };

    while (x !== n) {
        x = op(x);
        xs.push(x);                
    }
    return xs;
}

document.write('<pre>' + JSON.stringify(range(3, 11), 0, 4) + '</pre>');
document.write('<pre>' + JSON.stringify(range(7, 2), 0, 4) + '</pre>');
document.write('<pre>' + JSON.stringify(range(42, 42), 0, 4) + '</pre>');
&#13;
&#13;
&#13;