Tipos Primitivos와 Tipos de Referência

5649 단어
Chegamos a mais um post da minha em JavaScript.

No post de hoje irei falar sobre tipos primitivos e tipos de reference.

티포스 프리미티보스



O tipo primitivo, Refere-se a um dado que não é Representativeado por um objeto .

JavaScript 없음, 기본 6가지 팁:
  • 숫자
  • 문자열
  • 부울
  • 정의되지 않음
  • 심볼
  • BigInt

  • Na maioria das vezes, um valor primitivo é Representativeado diretamente no nível mais baixo da implementação da linguagem.

    Todos os tipos primitivos são imutáveis, ou seja, não podem ser alterados.

    É Importante não confundir um tipo primitivo em si com uma variável attribuída a um valor primitivo. A variável pode ser reatribuída a um novo valor, mas o valor existente não pode ser alterado das mesmas formas que fazemos com objetos, matrizes e funções.

    티포스 데 레퍼렌시아



    사물의 맥락이 없습니다. 사물의 참조가 아닙니다.

    JavaScript 없음, 참조용 팁:
  • Todos os tipos de objetos:
  • Objetos literais
  • 어레이
  • Funções
  • 데이터
  • Todos os outros objetos


  • Tipos Primitivos e Tipos por Referência 입력



    A diferença entre eles está relacionada na forma como são armazenados na memória.

    Quando criamos algum tipo primitivo, a gente atribui uma variável, esse valor é armazenado na stack que na tradução significa pilha.

    A stack é uma pilha de diferentes valores na memória que podem ser acessados ​​Rapidamente quando precisamos utiliza-los, porém, o espaço dentro dela é limitado.

    Já quando criamos um tipo de referência (objetos), esse valor ficar armazenado no heap que na tradução significa amontoado.

    O heap tem mais espaço disponível, permitindo armazenar objetos maiores e mais complexos, porém, ele é um pouquinho mais lento que a stack .

    Exemplo de como funciona o tipo primitivo na stack:

    let scoreOne = 50
    let scoreTwo = scoreOne
    
    console.log(`ScoreOne: ${scoreOne} | ScoreTwo: ${scoreTwo}`) // scoreOne: 50 | scoreTwo: 50
    
    scoreOne = 100
    
    console.log(`ScoreOne: ${scoreOne} | ScoreTwo: ${scoreTwo}`) // scoreOne: 100 | scoreTwo: 50
    


    Perceba que mesmo atribuindo novo valor a variável scoreOne , o valor atribuído a variável scoreTwo não foi alterado, mesmo que o seu valor na criação tenha scoreOne
    참조에 대한 예시:

    let userOne = {
      name: 'Roger',
      age: 31
    }
    
    let userTwo = userOne
    
    console.log(userOne, userTwo) // Object { name: "Roger", age: 31 } Object { name: "Roger", age: 31 }
    
    userOne.age = 35
    
    console.log(userOne, userTwo) // Object { name: "Roger", age: 35 } Object { name: "Roger", age: 35 }
    


    Já nos tipos por reference isso não ocorre, pois o JavaScript, utiliza um ponteiro na atribuição, que faz com que esse ponteiro semper aponte pro objeto original no heap .

    Por isso quando alterei a idade do userOne , o reflexo foi percebido no userTwo , pois por baixo dos panos, o ponteiro está somente apontando para o mesmo objeto.

    E chegamos ao fim de mais um post da minha saga de estudos em JavaScript.


    Esse foi mais um post da minha saga de estudos em JavaScript Vanilla. Espero que estejam gostando!

    Qualquer dúvida ou sugestão, vocês me encontram nas minhas redes sociais:

    GIthub

    좋은 웹페이지 즐겨찾기