Chat:Ru/2022-07-03
Darronar: Есть тут JS'еры? Я еще обучаюсь, и не могу понять, почему при передаче в функцию переменных как два аргумента и допустим я в функции приравниваю их, но после вызова функции это не как не влияет на переменные.
Di8: не знаю точно как в JS, но если функции там работают как в c# то ты создаешь новые локальные переменные и изменяешь значения этих локальных переменных, в то время как в основной программе переменные никак не меняются
Darronar: Да, продолбился в глаза, в функции используются копии
Di8: бывает ) в шарпе можно передавать ссылки на переменные и тогда будут меняться значения именно тех переменных ссылки на которые ты передал, но лучше просто возвращать значение функции и присваивать нужному элементу, ну или использовать статику, но это самый худший вариант
Di8: думаю в JS реализация функций будет такой же, но могу ошибаться
Darronar: Блин, у меня в коде могут передаваться разные переменные как аргумент и там return 'ом не отделаешься. Теперь все переписывать :c два часа насмарку
Di8: если ты не объектно кодишь, то можешь объявить их глобально
Di8: и вообще ничего не передавать, ты сможешь их использовать без передачи
Di8: либо поищи возможность передачи ссылки в функцию в c# ты просто пишешь перед элементом ref и в приеме функции пишешь ref
Di8: думаю в JS тоже есть такая возможность тебе нужно будет просто промаркеровать все передачи изменяемых значений ref или аналогом в JS и у тебя будут изменяться глобальные значения, но переписывать точно не лучший вариант
Darronar: нашел выход, надо просто передавать как строку и обращаться к window
AntonBlockchain: если передаешь объект то передается по ссылке - можно менять. атомарные значения передаются по значению
AntonBlockchain: по ссылке это и есть ref ) по факту зато ты знаешь где у тебя обрабатывается объект. и не ожидаешь что функция будет пачкать параметры. запихиваешь все что тебе нужно обработать в объект и и передаешь его. целиком.
AntonBlockchain: он передается по ссылке так что его размер не важен.