@The_XXI

Почему числу внутри setInterval нельзя прибавить другое число?

Есть интервал, в функцию этого интервала передается число, почему к этому числу нельзя ничего прибавить?
let interval = setInterval(function(currentNumber){
    console.log(currentNumber);
    currentNumber++;
}, 1000, 5);

В консоли каждый раз выводится число 5
  • Вопрос задан
  • 111 просмотров
Решения вопроса 1
@rPman
в javascript аргументы не передаются by ref, но если передать объект - то он будет передан как ссылка на него, а значит его переменные не будут скопированы

let interval = setInterval(function(obj){
    console.log(obj.currentNumber);
    obj.currentNumber++;
}, 1000, {currentNumber:5});
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Можно так переписать, не меняя смысла:
function foo(currentNumber){
    console.log(currentNumber);
    currentNumber++;
}

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

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

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы