/ / Os parâmetros passam por valor vs parâmetros como variáveis ​​locais em Javascript [duplicado] - javascript, lógica

Parâmetros passam por valor vs parâmetros como variáveis ​​locais em Javascript [duplicado] - javascript, lógica

Digamos, por exemplo, que você tem uma função como a abaixo

var value = 1;
function test(myVar) {
myVar = 2
}
test(value)
console.log(value)
//prints out 1

Agora, eu li que há duas coisas que acontecem nas funções JS.

1) Javascript passa primitivos por valor. Quando "valor" é passado como um argumento para test (), uma cópia é criada separada da variável global "valor". Portanto, "myVar" é uma variável separada de "valor"

2) Parâmetros em funções JS são realmente apenas variáveis ​​locais para a função. Portanto, o parâmetro "myVar" tem escopo apenas dentro da função test ().

Eu sei que ambas as afirmações são verdadeiras, mas qual delas faz com que console.log (valor) imprima 1

Respostas:

0 para resposta № 1

Ambas as afirmações são verdadeiras. A razão pela qual ele imprime 1 é que, como você mencionou, os parâmetros são passados ​​por valor. Como tal, o valor da sua variável value nunca é alterado.

Embora o ponto # 2 também seja verdadeiro, ele realmente não tem muito a ver com esse comportamento. Está mais relacionado a fazer algo como usar myVar fora do escopo dessa função.


0 para resposta № 2

Ambas as afirmações estão corretas

Por favor, verifique este URL do Mozilla Escopo variável em Javascript