JavaScript:参考中止
#javascript #初学者 #编程 #braziliandevs

美丽的人,美丽?

今天,我将通过JavaScript参考来解释一些有关归因的信息,以及它的工作原理以及它产生的问题以及如何解决。

它是通过引用归因的?

当我们在JS中创建一个差异并将值归因于其值时,值的类型确定它是通过值还是通过参考进行分配。

但是,您问我将通过参考来归因。良好的是,当用该值创建内存中的空间的发明时,我们仅在原始方差的内存中解决相同地址的新差异。就像指针作品一样,por©m,没有像在C中那样操纵地址。

在每种类型的职责工作列表下方:

按值:

  • 未定义
  • null
  • 数字
  • 字符串
  • 符号

翻滚:

  • 对象

让我们举例说明

让我们看看下面的示例,我们使用koud1和koud2属性创建了一个pessoa对象,以及该对象的基础,我们创建了另一个称为koud3的对象,仅将其归因于pessoa对象,然后将outraPessoa对象的年龄修改为30我们在每个对象中给出一个台。

// Objeto original
const pessoa = { nome: "João", idade: 25 };

// Atribuição por referência
const outraPessoa = pessoa;

// Modificando a propriedade do objeto
outraPessoa.idade = 30;

console.log(pessoa.idade); // Saída esperada: 25, Saída real: 30
console.log(outraPessoa.idade); // Saída: 30

我们可以在上面的示例中看到,当我们更改koud3对象中的年龄属性的值,然后在屏幕上显示pessoa对象的值也更改。好吧,如果您了解那里的参考概念,也许您一定已经了解了为什么会发生。如果我解释。良好的基本上,可变outraPessoa也指向与差异pessoa相同的纪念地址,一旦一个更改为另一个。

如何避免这种问题?

有一些方法可以解决这种情况并获得预期的结果:

  1. mâ©todo object.assign

您可以使用母亲©所有Object.assign创建一个新对象,如下示例:

// Objeto original
const pessoa = { nome: "Maria", idade: 30 };

// Clonando o objeto
const pessoa1 = Object.assign({}, pessoa)

// Modificando a propriedade do clone
pessoa1.idade = 35;

console.log(pessoa.idade); // Saída: 30
console.log(pessoa1.idade); // Saída: 35

  1. 传播

您还可以使用差异操作员或扩展来创建一个新对象,如下示例:

// Objeto original
const pessoa = { nome: "Maria", idade: 30 };

// Clonando o objeto
const clonePessoa = { ...pessoa };

// Modificando a propriedade do clone
clonePessoa.idade = 35;

console.log(pessoa.idade); // Saída: 30
console.log(clonePessoa.idade); // Saída: 35
  1. json.stringfy

这远非是情况的最佳解决方案之一,但是我已经看到和工作了。它包括将对象再次传递给对象并输入方差后,将对象转换为字符串,如下示例:

// Objeto original
const pessoa = { nome: "Maria", idade: 30 };

// Clonando o objeto
const clonePessoa = JSON.parse(JSON.stringify(pessoa));

// Modificando a propriedade do clone
clonePessoa.idade = 35;

console.log(pessoa.idade); // Saída: 30
console.log(clonePessoa.idade); // Saída: 35

我希望我能帮助解决并了解有关JavaScript的工作原理的更多信息。在下面,我将留下一些可能很有趣的链接。

链接

Valores Primitivos e Valores de Referência no JavaScript by Ricardo Reis

Armazenando as informações que você precisa — Variáveis


如果您到达这里©,请在redes vizinhas.中关注我