Вы, вероятно, пытаетесь этот код в нод-репле. Особенность repl заключается в том, что каждая отправленная команда получает новый контекст. Это означает новый глобальный объект. Любая из ваших переменных в старом контексте все еще может быть найдена, но все глобальные переменные js заменены новыми. Это включает в себя глобальные, объект, массив и т. Д.
То, что вы делаете, будет хорошо работать в скрипте. Только не в репл.