(Update 19 November 2018: See this article for a more elegant solution.)
If you know your JavaScript, you know that all variables, functions, objects, resources, and data in the document get rewritten with every page load. In other words, every single page refresh builds the page from scratch, and the state of the document before the page refresh is left drifting in the ocean of oblivion.
Google Tag Manager’s dataLayer is also one such entity.