Почему числу внутри setInterval нельзя прибавить другое число?
в javascript аргументы не передаются by ref, но если передать объект - то он будет передан как ссылка на него, а значит его переменные не будут скопированы

let interval = setInterval(function(obj){
    console.log(obj.currentNumber);
    obj.currentNumber++;
}, 1000, {currentNumber:5});
Можно так переписать, не меняя смысла: function foo(currentNumber){
    console.log(currentNumber);
    currentNumber++;
}

setInterval(foo, 1000, 5);Здесь, наверное, понятно, почему будет каждый раз 5 ?

Ну, или даже так:foo(5); // выведет 5
foo(5); // выведет 5
foo(5); // выведет 5Внутренняя переменная функции изначально 5, выводит 5 и становится 10. Функция завершила работу, про переменную все забыли.