JavaScript is pass-by-reference for all Objects and Arrays. Value types are pass-by-value.
let obj = {a: 1}
function foo(arg) {
return obj === arg;
}
foo(obj) // true
The === operator operates on object not by comparing their value, but by comparing their memory reference [1]. A function argument variable can be reassigned using = in the function body, but that changes which location in memory the reference points to and isn't somehow "proof" of pass-by-value.[1] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe...