JSの配列やobjectは参照渡しのような値渡し。
stirngやintegerは値渡し。
@shiracamus さんにコメントで教えていただきました。
正確には、JSには値渡ししかなくて、参照渡しはできないです。オブジェクトを代入した変数にはオブジェクトの参照値が保持されていて、保持している値=オブジェクトの参照値 を渡すので、あくまで値渡しなのです。
PHPは通常、値渡し。
&をつけて&$hogeとすると参照渡し。
JSが参照渡しになることを知らなくて、なんでだー、Vueのせいかとかいろいろやった挙げ句、バグの原因がこれだったので、あーとなった。
参考
JavaScript の配列やオブジェクトは参照渡しになる…バグを生む落とし穴
http://neos21.hatenablog.com/entry/2018/05/20/080000