Si vous êtes implicitement déclarer la variable sans var
, la bonne façon serait d'utiliser delete foo
.
Cependant après l'avoir supprimé, si vous essayez de l'utiliser dans une opération telle que la outre un ReferenceError
sera levée, car vous ne pouvez pas ajouter une chaîne à une non déclarées, non défini identifiant. Exemple:
x = 5;
delete x
alert('foo' + x )
// ReferenceError: x is not defined
Il peut être plus sûr dans certaines situations, de l'attribuer à false, null ou undefined donc de la déclarer et de ne pas jeter ce type d'erreur.
foo = false
Notez que dans ECMAScript null
, false
, undefined
, 0
, NaN
ou ''
serait à même d'évaluer tous d' false
. Assurez-vous de ne pas utiliser l' !==
de l'opérateur, mais au lieu !=
lors de la vérification de type pour les booléens et vous ne voulez pas la vérification de l'identité (so null
serait - == false
et false == undefined
).
Notez aussi que l' delete
n'a pas de "supprimer" les références, mais seulement des propriétés directement sur l'objet, par ex.:
bah = {}, foo = {}; bah.ref = foo;
delete bah.ref;
alert( [bah.ref, foo ] )
// ,[object Object] (it deleted the property but not the reference to the other object)
Si vous avez déclaré une variable var
vous ne pouvez pas le supprimer:
(function() {
var x = 5;
alert(delete x)
// false
})();
Dans Rhino:
js> var x
js> delete x
false
De même, vous pouvez supprimer certaines propriétés prédéfinies comme Math.PI
:
js> delete Math.PI
false
Il y a quelques rares exceptions delete
comme avec n'importe quelle langue, si vous vous souciez assez, vous devriez lire: