Como passar parâmetros em chamadas de funções por referência em JavaScript?

Em JavaScript, os parâmetros de função são passados por valor, o que significa que, por padrão, você não pode passar parâmetros por referência. No entanto, você pode contornar essa limitação usando objetos ou arrays, que são passados como referência.

Por exemplo, vamos considerar uma função que recebe um objeto como parâmetro e modifica uma de suas propriedades:

function modificarPropriedade(obj) {
  obj.propriedade = "valor modificado";
}

var objeto = { propriedade: "valor inicial" };
modificarPropriedade(objeto);
console.log(objeto.propriedade); // imprime "valor modificado"

Neste exemplo, a função modificarPropriedade recebe um objeto como parâmetro obj e modifica sua propriedade propriedade. O objeto é passado como referência, o que significa que qualquer modificação feita dentro da função também afetará o objeto fora dela.

Da mesma forma, você pode usar um array para passar por referência:

function modificarArray(arr) {
  arr.push("elemento adicionado");
}

var array = [1, 2, 3];
modificarArray(array);
console.log(array); // imprime [1, 2, 3, "elemento adicionado"]

Neste exemplo, a função modificarArray recebe um array como parâmetro arr e adiciona um elemento a ele usando o método push(). O array é passado como referência, então a modificação é refletida fora da função.

Lembrando que isso só funciona com objetos e arrays, e não com tipos primitivos como números, strings e booleans, que são passados por valor.