it is sort of like the difference between mailing someone a
word document and mailing them a url to a file.
pass by value makes a copy of the data and sends it over. if you make changes to what you get, it has no affect on the original.
pass by reference tells you where the file lives, so if you then go there and edit it, it is changed for everyone.
There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors