Обращение к глобальным переменным из другого документа

Есть два html документа first.html и second.html Есть два файла js first.js и second.js Я объявляю две глобальные переменные let arr=[]; let str = "Hello Kitty!"; В документе first.html по нажатию на кнопку срабатывает функция которая присваивает новые значения для arr и str

После нажатия на кнопку, я запускаю второй документ second.html для которого в скрипте second.js пытаюсь обратиться к переменным из первого скрипта first.js Но документ выводит значения первоначальные. А мне нужны уже измененные. Подскажите пожалуйста как это сделать вот файлы

файл first.html:

    <head>
        <script src="first.js"></script>    
        </head>
        <body>      
            <button id="btn">KNOPKA</button>
        </body>

файл first.js:

    window.addEventListener("DOMContentLoaded", init);
    let arr = [];
    let str = "Hello Kitty!";
    
    function buttonClick() {
        arr = [1, 2, 3];
        str = "Hello Dolly";
    }
    
    function init() {
        let button = document.getElementById("btn");
        button.addEventListener("click", function() {
            buttonClick()
        });
    }

файл second.html: 

    <body>
        <script src="first.js"></script> 
        <script src="second.js"></script>       
    </body>

файл second.js:

    alert(arr);
    alert(str);

Ответы (3 шт):

Автор решения: Vasily

В Вашем случае Вы переходите на новую страницу, где загружаете оба файла со скриптами по новой, соответственно значения будут приведены к исходным.

Обьявите требуемые Вам переменные один раз на той странице, которая будет загружена первой, например на index.html, после чего Вы сможете обращаться к ним из обоих ваших файлов:

// head tag файла index.html  
<script>
  let arr = []
  let str = "Hello Kitty!"
</script>
→ Ссылка
Автор решения: Touch me

Лучше будет присвоить их глобальному объекту window перед загрузкой скриптов:

// head tag файла index.html  
<script>
  window.arr = []
  window.str = "Hello Kitty!"
</script>
→ Ссылка
Автор решения: Дима

Решил ВОПРОС так. Использовал localStorage. Правда он хранит строковые значения, но ничего Джаваскрипт всемогущ, можно переделать!!!!!!

→ Ссылка