Code 1 prints "florence"
let name = "florence";
function test (arr) {
arr += " and the machine";
}
test(name);
console.log(name);
Code 2 prints "florence and the machine"
let name = ["florence"];
function test (arr) {
arr[0] += " and the machine";
}
test(name);
console.log(name);
I understand that the outcomes are different because Code 1 passes by value, and Code 2 passes by reference. I'm just trying to understand why.
When you pass an object (array), the referrnce to the object is passed, so in your case arr points to name.
arr[0] however now points to the value at name[0], and name[0] is modified accordingly.
Changing arr has no global effect:
let name = ["florence"];
function test (arr) {
arr[0] += " and the machine";
arr=[];
}
test(name);
document.write(name);