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 № 1Ambas 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