У меня есть функция, которая возвращает значение глобальной переменной. Когда я назначаю этот результат локальной переменной и изменяя локальное значение, меняется и другая переменная.Почему Изменение значения локальной переменной влияет на глобальную копию
Пример:
function setGlobal
{
$temp = @{}
$temp.id = 50;
$Global:global1 = $temp;
return $Global:global1;
}
потом вызывать эту функцию, и установить значение результата:
$result = setGlobal
$result.id = 80
теперь обе переменные имеет то же значение.
$Global:global1 # id = 60
$result # id = 60
Как я могу предотвратить это? И почему изменение локального значения повлияет на глобальную копию?
Локальное изменение глобального, потому что на самом деле у вас есть две вещи: переменная и набор, на которые указывает переменная. вы не изменяете переменную, содержащую коллекцию, вы сами изменяете ее. –