Qual é a diferença entre passe por valor e passagem por referência em javascript?

Qual é a diferença entre passe por valor e passagem por referência em javascript?
JavaScript é uma linguagem de programação que oferece aos nossos aplicativos e páginas da web a capacidade de pensar e agir, tornando -o interativo e dinâmico. Como qualquer outra linguagem de programação, o JavaScript oferece funções americanas que são um conjunto de comandos ou instruções definidas que são executadas apenas quando chamamos a função que possui esse código. A função leva uma entrada ou alguns argumentos e retorna a saída. Os argumentos de entrada podem ser passados ​​por valor ou referência.

Então, neste post, definiremos os termos "Passam por valor" e "Passe por referência" junto com exemplos em JavaScript, além de explicar as diferenças entre os dois.

O que é o valor por passes?

Uma função é chamada diretamente enviando o valor da variável como um argumento se essa função for um valor passante. Como resultado, quaisquer alterações feitas na função não têm impacto no valor inicial ou original. O valor original não é alterado porque, quando passamos a variável em uma função como um argumento, a cópia dessa variável é criada e, portanto, quaisquer alterações ou operações executadas dentro dessa função são feitas na variável de cópia, em vez da original.

Passe por exemplo de valor

Vamos criar uma função com o nome de passbyValue e alterar os valores das variáveis a e b que são passados ​​como argumentos nesta função. Fora da função, inicializamos as variáveis ​​A e B e damos 1 e 2 valores, respectivamente. Então console em registrar esses valores.

função passbyvalue (a, b)
a = 3;
b = 4;
console.log ("dentro da função")
console.log ("a:", a, "b:", b); // 3, 4

deixe um = 1;
Seja b = 2;
console.log ("Função externa. Antes de chamar a função ");
console.log ("a:", a, "b:", b); // 1,2
passbyValue (a, b);
console.log ("Função externa. Depois de chamar a função ");
console.log ("a:", a, "b:", b); // 1,2

Veremos que, quando consolarmos registrar os valores de A e B fora da função, ele dirá 1 e 2. No entanto, dentro da função, os valores serão 3 e 4 e novamente depois de chamar essa função, os valores não mudarão, pois dentro das cópias de função foram feitas de A e B e foram feitas alterações nessas cópias.

O que é referência?

Uma função é chamada fornecendo a referência/endereço da variável como um parâmetro em referência passada. Como resultado, modificar o valor dentro da função também modifica o valor fora da função que é o valor original. O recurso de referência por referência é usado em matrizes e objetos JavaScript.

Passe por exemplo de referência

Vamos inicializar um objeto e dar duas propriedades a ele. Uma propriedade define o nome da máquina e a outra “ISON”O que nos permite saber se a máquina está ligada ou não. Também inicializamos uma função com o nome de passbyReference e altere o valor das propriedades do objeto de computador, como nome e ison. Em seguida, consolamos essas propriedades antes e depois de chamar a função:

função passbyReference (máquina)
máquina.name = "computador";
máquina.ison = true;

Var Computer =
Nome: "MyComputer",
ISON: FALSO
;
console.log ("antes da função de chamada");
console.log (computador.ison); // verdadeiro;
console.log (computador.nome); // Computador
passbyReference (computador);
console.log ("Após a função de chamada");
console.log (computador.ison); // verdadeiro;
console.log (computador.nome); // Computador

Podemos ver que as cópias não foram feitas na função e as propriedades originais do objeto de computador foram alteradas; portanto, é passado por referência.

Diferença entre passe por valor e passagem por referência

A principal diferença entre passe por valor e passagem por referência é que o passe por referência entra em jogo quando atribuímos primitivos e passam por valor entra em jogo quando atribuímos objetos. Os tipos de dados primitivos incluem números de string, boolean, símbolos e valores como nulo e indefinido, e os tipos de dados de objeto incluem funções, matrizes e objetos simples.

A segunda grande diferença entre os dois é que o valor por um valor cria uma cópia e, em seguida, são feitas alterações nessa cópia; No entanto, na referência, nenhuma cópia é feita e a modificação é feita na variável original.

Conclusão

Podemos passar valores para uma função via passagem por valor ou passagem por referência. A passagem por valor é feita nos tipos de dados primitivos, como string, número, booleano, e toda vez que você passa uma variável para uma função, ela cria uma cópia dessa variável e depois modifica essa copia em um passe por valor. Pass por referência é feito no tipo de dados do objeto, como funções, matrizes e objetos simples e, no passe por referência, o valor original é modificado como passagem por referência não cria uma cópia.

Neste post, primeiro, vimos o que é o passe por valor e passar por referência é e explicamos os fenômenos com a ajuda de um exemplo e depois continuamos nossa discussão, respondendo à pergunta de qual é a diferença entre passar por valor e passar por Referência em JavaScript.