Примитивы передаются по значению, а объекты передаются по ссылке. Это сильно отличается от других языков, таких как C, VB или Delphi. Я не могу сказать, как они точно обрабатывают объекты и примитивы, но я знаю о VB и Delphi, что он может (и должен) быть указан.
php делает то же самое, начиная с версии 5: все объекты передаются по ссылке, но все примитивы могут передаваться по ссылке, если перед ними стоит амперсанд (&). В противном случае примитивы передаются по значению.
Так, в javascript, если я передам объект X в функцию через параметр, это все равно будет X. Если вы изменяете данные внутри функции (или любого другого объекта, но это не важно ) это новое значение также доступно вне функции.