यदि आप स्पष्ट रूप से चर को बिना घोषित कर रहे हैं 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);सफलतापूर्वक चर को हटा देगा और संदर्भ त्रुटि जारी करने के लिए अंतिम पंक्ति का कारण होगा।