Chat:Ru/2022-07-03

From CG community
Jump to navigation Jump to search

Default avatar.png Darronar: Есть тут JS'еры? Я еще обучаюсь, и не могу понять, почему при передаче в функцию переменных как два аргумента и допустим я в функции приравниваю их, но после вызова функции это не как не влияет на переменные.

Default avatar.png Di8: не знаю точно как в JS, но если функции там работают как в c# то ты создаешь новые локальные переменные и изменяешь значения этих локальных переменных, в то время как в основной программе переменные никак не меняются

Default avatar.png Darronar: Да, продолбился в глаза, в функции используются копии

Default avatar.png Di8: бывает ) в шарпе можно передавать ссылки на переменные и тогда будут меняться значения именно тех переменных ссылки на которые ты передал, но лучше просто возвращать значение функции и присваивать нужному элементу, ну или использовать статику, но это самый худший вариант

Default avatar.png Di8: думаю в JS реализация функций будет такой же, но могу ошибаться

Default avatar.png Darronar: Блин, у меня в коде могут передаваться разные переменные как аргумент и там return 'ом не отделаешься. Теперь все переписывать :c два часа насмарку

Default avatar.png Di8: если ты не объектно кодишь, то можешь объявить их глобально

Default avatar.png Di8: и вообще ничего не передавать, ты сможешь их использовать без передачи

Default avatar.png Di8: либо поищи возможность передачи ссылки в функцию в c# ты просто пишешь перед элементом ref и в приеме функции пишешь ref

Default avatar.png Di8: думаю в JS тоже есть такая возможность тебе нужно будет просто промаркеровать все передачи изменяемых значений ref или аналогом в JS и у тебя будут изменяться глобальные значения, но переписывать точно не лучший вариант

Default avatar.png Darronar: нашел выход, надо просто передавать как строку и обращаться к window

AntonBlockchain: если передаешь объект то передается по ссылке - можно менять. атомарные значения передаются по значению

AntonBlockchain: по ссылке это и есть ref ) по факту зато ты знаешь где у тебя обрабатывается объект. и не ожидаешь что функция будет пачкать параметры. запихиваешь все что тебе нужно обработать в объект и и передаешь его. целиком.

AntonBlockchain: он передается по ссылке так что его размер не важен.