为什么count ++在作为参数传递时不起作用

时间:2015-08-19 17:59:55

标签: javascript arguments increment

我有以下代码。如果您将代码传递给列表,它将提供该位置的值(它是零索引)。此代码有效,但如果我将 count = count + 1 替换为 count ++ (在条件的最后一个分支中),它将不再有效。有人可以帮我理解为什么吗?

注意:如果您调用此函数:

var list = {value: 10, rest: {value: 10, rest: {value: 30, rest: null}}}

nth(list, 1)

输出应为20。

function nth(list, index, count) {
    if (count === undefined) {
        count = 0;
    }

    if (count === index) {
        return list.value;
    }
    else if (list.rest === null) {
        return undefined;
    }
    else {
        // note that count++ will not work here
        return nth(list.rest, index, count = count + 1);
    }
}

2 个答案:

答案 0 :(得分:8)

这是因为

 count++

是后缀增量。这意味着它会创建一个新值,旧计数,并将该值传递给函数。

你想要前缀。

 ++count.

答案 1 :(得分:0)

尝试改变,

return nth(list.rest, index, count = count + 1);

return nth(list.rest, index, ++count);