Всем привет, меня интересует такая тема, вот вызываем мы функцию и передаем определенные параметры, и как они работают внутри функции, с переменной которая вне блока или же создается какая то копия?
Всем привет, меня интересует такая тема, вот вызываем мы функцию и передаем определенные параметры, и как они работают внутри функции, с переменной которая вне блока или же создается какая то копия?
Вообще, параметры всегда копируются в локальные переменные функции, и все манипуляции и тому подобное происходит уже с локальными переменными с тем же контентом, но если сильно хочется можно поменять глобальный объект, который вне функции, если использовать window то можно найти переменную которая вне блока функции, вот пример:
function greetings(name, text) {
name = 'Меня зовут ' name;
window.name = "Олексей";
alert( name ', ' text );
}
var name = "Дмитрий";
greetings(name, "приветствую!");
alert( name );
greetings(name, "здравствуй!")
То есть тут мы по сути создали функцию которая принимает два параметра, первый имя, второй текст, первое что делает эта функция это изменяет переменную имя добавляя к ней приставку, но это происходит с локальной переменной, а вот в строке после этой мы уже с помощью window обращаемся к глобальному объекту, и изменяем уже его состояние, alert выведет нам локальную переменную, но когда после окончания функции мы выведем еще раз переменную name alertом увидим что значение изменилось, и уже при следующем вызове этого метода передается новое глобальное значение, как то так.