2015-08-19 2 views
0

У меня есть код ниже. Если вы передадите код в список, он предоставит значение в этой позиции (оно будет нулевым индексированием). Этот код работает, но если я заменю 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); 
    } 
} 
+0

Там не в ваших 'list' – thefourtheye

ответ

8

Это потому, что

count++ 

ли приращение постфикса. Это означает, что он создает новое значение, старый счетчик и передает это значение в функцию.

Вы хотите префикс.

++count. 
+0

Спасибо за ответ нет' 20'! –

0

пытаются изменить,

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

в

return nth(list.rest, index, ++count); 
Смежные вопросы