JavaScript функции получают примитивы по значению, а не по ссылке. Когда ваша функция cardTotal
получает значение bar
в качестве одного из аргументов, попадание в один из ваших блоков else
просто меняет локальное значение cardTotal
на bar
; но помните, поскольку это примитив (number
), он был передан по значению, поэтому функция имеет только значение cardValue
, а не ссылку на него.
Немного лучше: внутри cardTotal
, принять только один аргумент (card1
или card2
) и напрямую изменить cardValue
из функции, то есть:
if (3 >= foo) {
cardTotal += 11; // Add 11 to cardTotal
} else {
...
Даже лучше: cardTotal
вернуть значение в конце этого Таким образом, cardTotal
по-прежнему принимает два значения. Измените его локальное значение внутри области функции, а затем return
, чтобы это значение вернулось из функции.
Итак, последняя строка cardTotal должна быть return bar;
Тогда последняя пара строк вашего кода может быть изменена на:
cardValue = cardTotal(card1, cardValue);
console.log(cardValue);
cardValue = cardTotal(card2, cardValue);
console.log(cardValue);