В вашей do
функции у вас есть аргумент функции с тем же именем, что и ваша глобальная переменная ( state
). Это маскирует глобальную переменную. И все «родные» переменные (например, строки и числа) передаются по значению, а не по ссылке.
Простое исправление, просто полностью потеряйте аргумент. Затем вы будете работать с глобальной переменной.
do
Также как в стороне, я действительно удивлен, что вы можете заставить этот код запускаться вообще, поскольку do
это ключевое слово в JavaScript . Я должен был изменить имя, чтобы даже запустить ваш код.