Değişkeni dolaylı olarak bildiriyorsanız var
, doğru yol kullanmak olacaktır delete foo
.
Ancak, silindikten sonra, bunu eklenme gibi bir işlemde kullanmaya çalışırsanız, ReferenceError
bildirilmemiş, tanımlanmamış bir tanıtıcıya dize ekleyemeyeceğiniz için a atılır. Misal:
x = 5;
delete x
alert('foo' + x )
// ReferenceError: x is not defined
Bazı durumlarda yanlış, boş veya tanımsız olarak atanması daha güvenli olabilir, böylece bildirilir ve bu tür bir hata atmaz.
foo = false
Not ECMAScript'te olduğunu null
, false
, undefined
, 0
, NaN
, veya ''
tümüne değerlendirirsiniz false
. Sadece !==
operatörü kullanmadığınızdan emin olun, bunun yerine !=
booleans için tip kontrolü yaparken ve kimlik kontrolü istemiyorsanız ( ve öyle null
olur ).== false
false == undefined
Ayrıca delete
, referansların "silinmediğini", yalnızca nesnenin üzerindeki özelliklerin, örneğin:
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)
Birlikte bir değişken bildirdiyseniz var
, onu silemezsiniz:
(function() {
var x = 5;
alert(delete x)
// false
})();
Gergedan'da:
js> var x
js> delete x
false
Ayrıca önceden tanımlanmış bazı özellikleri de silemezsiniz Math.PI
:
js> delete Math.PI
false
delete
Herhangi bir dilde olduğu gibi bazı tuhaf istisnalar vardır, yeterince önemsiyorsanız okumalısınız:
var
bir işlev dışında kullanmak gibi ), web tarayıcılarında bulunan "global nesnenin" özellikleridirwindow
. Yani -var a = 1; delete window.a; console.log(a);
değişkeni başarıyla siler ve son satırın bir referans hatası vermesine neden olur.