En utilisant un tableau, au lieu d'un objet, je peux montrer que delete utilise moins de mémoire de tas que undefined.
Par exemple, ce code ne se terminera pas :
let y = 1;
let ary = [];
console.log("Fatal Error Coming Soon");
while (y < 4294967295)
{
ary.push(y);
ary[y] = undefined;
y += 1;
}
console(ary.length);
Il produit cette erreur :
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory.
Donc, comme vous pouvez le voir undefined
occupe en fait la mémoire du tas.
Cependant, si vous avez également delete
l'élément ary (au lieu de le mettre simplement à la valeur undefined
), le code se terminera lentement :
let x = 1;
let ary = [];
console.log("This will take a while, but it will eventually finish successfully.");
while (x < 4294967295)
{
ary.push(x);
ary[x] = undefined;
delete ary[x];
x += 1;
}
console.log(`Success, array-length: ${ary.length}.`);
Ce sont des exemples extrêmes, mais ils montrent bien que delete
que je n'ai vu personne mentionner nulle part.