Hola, tengo una pregunta sobre este código, ¿por qué imprime "Wild" en lugar de "Tabby"?
var cat = { name: "Athena" }; function swap(feline) { feline.name = "Wild"; feline = { name: "Tabby" }; } swap(cat); console.log(cat.name);
feline
como identificador es una variable local para su función. Al principio se refiere al cat
desde afuera, y así cambiar una parte del objeto es visible afuera.
Sin embargo, cuando configuras feline
en un objeto nuevo, eso sucede localmente.
var cat = { name: "Athena" }; function swap(feline) { console.log("feline, cat:",feline.name,cat.name,"feline===cat:",feline===cat); feline.name = "Wild"; console.log("feline, cat:",feline.name,cat.name,"feline===cat:",feline===cat); feline = { name: "Tabby" }; console.log("feline, cat:",feline.name,cat.name,"feline===cat:",feline===cat); } swap(cat); console.log("cat:",cat.name);