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