Jika Anda secara implisit mendeklarasikan variabel tanpa var, cara yang tepat adalah menggunakan delete foo.
Namun setelah Anda menghapusnya, jika Anda mencoba menggunakan ini dalam operasi seperti penambahan ReferenceErrorakan dibuang karena Anda tidak dapat menambahkan string ke pengidentifikasi yang tidak dideklarasikan, tidak terdefinisi. Contoh:
x = 5;
delete x
alert('foo' + x )
// ReferenceError: x is not defined
Dalam beberapa situasi mungkin lebih aman untuk menetapkannya sebagai false, null, atau undefined sehingga dideklarasikan dan tidak akan membuang jenis kesalahan ini.
foo = false
Perhatikan bahwa di ECMAScript null, false, undefined, 0, NaN, atau ''semua akan mengevaluasi false. Pastikan Anda tidak menggunakan !==operator tetapi !=saat mengetik memeriksa boolean dan Anda tidak ingin memeriksa identitas (begitu nulljuga == falsedan false == undefined).
Perhatikan juga bahwa deletetidak "menghapus" referensi tetapi hanya properti secara langsung pada objek, misalnya:
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)
Jika Anda telah mendeklarasikan variabel dengan varAnda tidak dapat menghapusnya:
(function() {
var x = 5;
alert(delete x)
// false
})();
Dalam Badak:
js> var x
js> delete x
false
Anda juga tidak dapat menghapus beberapa properti yang telah ditentukan seperti Math.PI:
js> delete Math.PI
false
Ada beberapa pengecualian aneh untuk deletebahasa apa pun, jika Anda cukup peduli, Anda harus membaca:
varfungsi di luar) adalah properti dari "objek global", yang ada di browser webwindow. Jadi -var a = 1; delete window.a; console.log(a);akan berhasil menghapus variabel dan menyebabkan baris terakhir mengeluarkan kesalahan referensi.