Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

334
Visualizações
¿Por qué WeakMap y WeakSet pueden funcionar con 1 elemento, pero no pueden funcionar con toda la recopilación de datos a la vez?

He leído que WeakMap y WeakSet no admiten trabajar con toda la recopilación de datos a la vez, lo que significa que keys() , values() , entries() , el size() y los bucles son inaccesibles para este tipo de colecciones. Está escrito que la razón de ese comportamiento es que el desarrollador no puede saber el momento exacto en que funcionará el recolector de basura.

la fuente

...técnicamente no se especifica exactamente cuándo ocurre la limpieza. El motor de JavaScript decide eso. Puede optar por realizar la limpieza de la memoria inmediatamente o esperar y realizar la limpieza más tarde cuando ocurran más eliminaciones.

¿Cómo veo esto? Por ejemplo, se eliminó el primer elemento de la recopilación de datos WeakMap/WeakSet . Pero puede suceder que el recolector de basura aún no lo haya eliminado del almacenamiento. Por lo tanto, el elemento eliminado se puede usar en bucles, métodos que funcionan con toda la colección. Para evitar este comportamiento, todos estos métodos y bucles no son compatibles con estas recopilaciones de datos.

 let weakMap = new WeakMap(); let obj = {}; //adding some elements weakMap.set(obj, 255); weakMap.set({name: `Rita`}, `Rita`); //deleting the first element obj = null; //we can't use loops for the whole collection //why? because deleted element with `obj` key can still exist in data storage weakMap.get(obj); //it's theoretically possible that deleted element with `obj` key still //exists in the data storage, garbage collector hasn't reached it yet

Es completamente comprensible. Pero, ¿qué hay de referirse a un solo elemento? Por cierto, está completamente permitido para este tipo de colecciones. Pero, de hecho, tampoco sabemos el momento exacto en que funcionará el recolector de basura. Como veo, significa que ese elemento se puede eliminar, pero debido al hecho de que el recolector de basura aún no lo ha alcanzado, todavía se puede mostrar.

¿Resulta que la funcionalidad limitada de estas colecciones no puede proteger los errores en forma de salida de elementos eliminados? ¿Estoy en lo correcto?

about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda