JavaScript: passagem por valor ou por referência? Entendendo a confusão
Olá a todos! Sou novo em JavaScript e não consigo entender como realmente funciona a passagem de argumentos para funções. Em alguns artigos dizem que JS passa tudo por valor, em outros que objetos são passados por referência. Escrevi um código simples que me deixou completamente confuso.
Aqui está um exemplo:
```javascript
function changeValue(x) {
x = 10;
console.log('Dentro da função:', x);
}
let a = 5;
changeValue(a);
console.log('Depois da função:', a); // 5 — tudo claro, o número não mudou
```
Isso está claro — o primitivo é passado por valor. Mas quando tento com um objeto:
```javascript
function changeObject(obj) {
obj.name = 'Novo nome';
}
let user = { name: 'Nome antigo' };
changeObject(user);
console.log(user.name); // 'Novo nome' — o objeto mudou! Então é por referência?
```
Mas o que me deixa ainda mais confuso é este exemplo:
```javascript
function replaceObject(obj) {
obj = { name: 'Um objeto completamente diferente' };
console.log('Dentro:', obj.name);
```
}
No answers yet.
Faça login para deixar uma resposta