หากคุณกำลังปริยายประกาศตัวแปรโดยไม่ได้var, delete fooวิธีการที่เหมาะสมที่จะใช้
อย่างไรก็ตามหลังจากที่คุณลบหากคุณพยายามใช้สิ่งนี้ในการดำเนินการเช่นการเพิ่มReferenceErrorจะถูกโยนเพราะคุณไม่สามารถเพิ่มสตริงลงในตัวระบุที่ไม่ได้ประกาศและไม่ได้กำหนด ตัวอย่าง:
x = 5;
delete x
alert('foo' + x )
// ReferenceError: x is not defined
อาจปลอดภัยกว่าในบางสถานการณ์เพื่อกำหนดให้เป็นเท็จโมฆะหรือไม่ได้กำหนดดังนั้นจึงมีการประกาศและจะไม่ทิ้งข้อผิดพลาดประเภทนี้
foo = false
ทราบว่าใน ECMAScript null, false, undefined, 0, NaNหรือทุกคนจะประเมิน'' falseตรวจสอบให้แน่ใจว่าคุณไม่ได้ใช้!==โอเปอเรเตอร์ แต่!=เมื่อพิมพ์การตรวจสอบบูลีนและคุณไม่ต้องการการตรวจสอบตัวตน (เช่นnullนั้น== falseและfalse == undefined)
นอกจากนี้โปรดทราบdeleteว่าไม่ได้อ้างอิง "ลบ" แต่เป็นเพียงคุณสมบัติโดยตรงบนวัตถุเช่น:
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)
หากคุณประกาศตัวแปรด้วยvarคุณไม่สามารถลบได้:
(function() {
var x = 5;
alert(delete x)
// false
})();
ในแรด:
js> var x
js> delete x
false
คุณไม่สามารถลบคุณสมบัติที่กำหนดไว้ล่วงหน้าได้เช่นMath.PI:
js> delete Math.PI
false
มีข้อยกเว้นแปลก ๆdeleteเช่นเดียวกับภาษาใด ๆ ถ้าคุณสนใจพอที่คุณควรอ่าน:
varนอกฟังก์ชั่น) เป็นคุณสมบัติของวัตถุ "ทั่วโลก"windowซึ่งในเว็บเบราเซอร์เป็น ดังนั้น -var a = 1; delete window.a; console.log(a);จะประสบความสำเร็จในการลบตัวแปรและทำให้บรรทัดสุดท้ายออกข้อผิดพลาดในการอ้างอิง