আপনি পরোক্ষভাবে ছাড়া পরিবর্তনশীল প্রকাশক হয় 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);সফলভাবে ভেরিয়েবল মুছবে এবং একটি রেফারেন্স ত্রুটি জারি করার জন্য শেষ পংক্তির কারণ ঘটবে।