But they are not actual terms and are not even conventions, just some things somebody used somewhere that you choose to stand behind. And I choose not to and prefer to use more common understanding of them.
See, it's all about usability and how users understand things. If one way of passing things leaves them with no side effect and another way lets called functions modify shared state without them realizing - these are the big distinctions. It really adds nothing if we call two slightly different variations of passing references by different names instead of more common and intuitive "pass-by-reference".
> But they are not actual terms and are not even conventions, just some things somebody used somewhere that you choose to stand behind. And I choose not to and prefer to use more common understanding of them.
Yes, they are actual terms. You are choosing to be wrong and spread misinformation.
> It really adds nothing if we call two slightly different variations of passing references by different names instead of more common and intuitive "pass-by-reference".
Yes, it really does. The "slightly different variation" has a huge impact on how you write code. PHP, for example, does pass-reference-by-value by default (same behavior as Javascript) but it can also do pass-by-reference if you specify that in the function definition.
see: https://www.tehplayground.com/nzi7SxTxXrrlqTZf
You used to be able to specify pass-by-reference when calling a function, but that was deprecated in 5.3 and removed in 5.4. It was removed precisely because it is important the the person writing a function knows if the variables he is using are pass-by-reference or pass-reference-by-value.
Since it is all about usability and helping users understand things, please stop trying to remove important meaning from the established term "pass-by-reference".
> The "slightly different variation" has a huge impact on how you write code.
From my years of experience with a language that has both variations (Perl) - it doesn't have much impact on how you write code at all, except making the language a bit more flexible and expressive in rare situations.
I consider usability of programming languages to be rather important and would like wrong ideas not to be claimed as terminology there nor conventions. Wrong people shouldn't be pushing wrong terms into the field they have no understanding of.
> And by the way, CS has no precise terminology about this,
That is not correct. You are the one mixing up terms. Pass-by-reference and Pass-by-value have specific meanings.
There are two acceptable terms for how Javascript passes variables, those are "pass-by-sharing" or "pass-reference-by-value" https://en.wikipedia.org/wiki/Evaluation_strategy#Call_by_sh...