Why are arrays passed by reference, but not singular variables? What is the benefit of this?

Viewed 52

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.

  1. What is the benefit of retaining the mutability of an array, but not a variable?
  2. CAN YOU pass variables by reference?
  3. CAN YOU pass arrays by value (without a workaround)?
1 Answers

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);

Related