Как работают параметры передаваемые в функцию JavaScript?

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

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


function greetings(name, text) {
name =
'Меня зовут ' name;
window.name = "Олексей";
alert( name ', ' text );
}

var name = "Дмитрий";

greetings(name, "приветствую!");

alert( name );

greetings(name, "здравствуй!")

То есть тут мы по сути создали функцию которая принимает два параметра, первый имя, второй текст, первое что делает эта функция это изменяет переменную имя добавляя к ней приставку, но это происходит с локальной переменной, а вот в строке после этой мы уже с помощью window обращаемся к глобальному объекту, и изменяем уже его состояние, alert выведет нам локальную переменную, но когда после окончания функции мы выведем еще раз переменную name alertом увидим что значение изменилось, и уже при следующем вызове этого метода передается новое глобальное значение, как то так.