N'JavaScript ont un segment de mémoire?
En d'autres termes, quelles options dois-je allouer de la mémoire en JavaScript?
Je sais que vous pouvez allouer de la mémoire à l'échelle mondiale, ou à l'intérieur de la portée de la fonction. Puis-je allouer de la mémoire dynamiquement? Ce qui ne l' new
opérateur signifie vraiment?
Edit: voici un exemple spécifique. Comment voulez-vous mettre en œuvre la lecture d'une valeur entière, de l'utilisateur - n
, puis lire n
entiers dans un tableau?
- Pour les "exemple": il suffit de
.push()
les valeurs.const n = read()
puisconst arr = []; for (let i = 0; i < n; i += 1) { arr.push(read()) }
. Des "tableaux" en JS sont des "Vecteurs" dans la mémoire consciente de langues. - Pour les gens de regarder cette question plus tard: Dans le cas d'une langue comme JS, tas et de la pile ne sont pas inhérents à la langue et peut être très dépendant de l'implémentation. V8 a la séparation de la tas et de la pile, et
null
,undefined
,true
etfalse
, si primitive, sont effectivement alloués sur le tas. Cette réponse stackoverflow.com/a/6604390/1460448 a plus de détails. Pour une normale de JS programmeur mais c'est plus comme des détails de mise en œuvre seulement.
Vous devez vous connecter pour publier un commentaire.
vous ne pouvez pas allouer de la mémoire. vous pouvez créer des objets. c'est ce que
new
n'.maintenant, javascript est un drôle de créature: les fonctions sont aussi des objets en javascript. Donc, cela signifie que vous pouvez instancier prettymuch tout en utilisant
new
.Donc, le
new
opérateur signifie qu'un nouvel objet est créé.Javascript également les déchets-collecte de ces variables, tout comme il arrive dans java. Donc si vous connaissez java, il devrait être facile pour vous de dresser des parallèles.
acclamations,
jrh
PS: quand vous allouer des objets, vous êtes vraiment à l'allocation de mémoire. Seulement, vous ne le faisons pas de manière explicite. Vous pouvez allouer un tableau, et qu'elle se comporte comme une mémoire tampon, mais qui va dégrader les performances javascript de façon drastique: les tableaux javascript ne sont pas en mémoire les tampons, ils sont aussi des objets (comme tout le reste).
JavaScript a la collecte des ordures et gère pour vous.
Cependant, vous pouvez aider à l'aide de la
supprimer
opérateur le cas échéant.De la Apple JavaScript Directives De Codage:
Steve
Hmmm me semble que vous venez de la mémoire axé langue et essayer de chausse cette logique en JS. Oui JS utilise de la mémoire (bien sûr), mais nous avons de collecte des ordures à prendre soin de nettoyage de tous.
Si vous êtes après des détails sur les entrailles de l'allocation de la mémoire, puis vous aurez à chasser autour pour cela. Mais en règle générale, lorsque vous utilisez var, de la nouvelle ou la déclaration d'une nouvelle fonction (ou fermeture) vous engloutir de la mémoire. Vous pouvez obtenir de vars à null à les marquer pour la collecte des ordures et vous pouvez utiliser le mot clé delete trop bien que quelques-uns à faire de l'une de ces si elles ne travaillent pas côté Serveur (comme moi avec ASP JScript) où son importance.
Javascript est vraiment, vraiment sympa, vraiment, trop amical à moitié!
Si vous avez un tableau de 3 éléments, et vous voulez ajouter une quatrième, vous pouvez simplement agir comme si ce tableau de l'emplacement existe déjà:
Afin d'être vraiment spécifique avec l'allocation de mémoire est inutile lors de l'ajout d'elelments.
Non, vous n'avez pas besoin et ne peut pas allouer de la mémoire. L'interpréteur JavaScript fait automatiquement.
var
est et pourquoi il doit être utilisé?Pour répondre à l'intitulé de la question, si vous êtes à la confiance en MDN, la plupart des implémentations de JavaScript ont un tas:
Tas
Plusieurs Exécutions De La Communication
Pour approfondir la gestion de la mémoire, il y a aussi un article ici bien que beaucoup de cette mise en œuvre est spécifique.
Vous n'avez pas besoin de gérer manuellement la mémoire en Javascript. Les deux tas et les piles sont utilisées sous le capot pour gérer la mémoire et il dépend de la mise en œuvre. Généralement, les variables locales sont sur la pile et les objets sont sur le tas.