As you mentioned elsewhere, these terms are well defined in computer science. But how JavaScript works doesn't match either of them.
It only creates confusion to force JavaScript assignment and parameter passing into one of those two categories. This is what has led to the widespread misconception that "primitives are passed by value, and objects are passed by reference."
We're not implementing JavaScript engines here, we're programming in JavaScript. Implementation details like addresses and pointers are unknown to our code. They may differ from one JavaScript engine to another, and even during a single run of your program as the engine decides on the fly how to optimize or de-optimize your code.
What matters is the observable behavior from the point of view of the running JavaScript code.
There are a few ways you could describe that behavior, such as my notion of a new "name" that refers to an existing "thing", or shkkmo's and andrewstuart2's "pass a reference by value". But it's not "pass by value" as that term is understood in other programming languages such as C/C++.
There is nothing to discuss here other than JavaScript developers trying to imagine stuff instead of learning the underlying literature concepts.
JavaScript is not a special snowflake language.
Computer Science describes how things are supposed to be, they don't change because of language X or Y.
A numeric value is put into the call stack.
Which in the case of references happens to be the address of pointee.
It is only pass by reference, if what is put into the call stack is the address of the actual variable on the caller stack holding the data.