delete Operator
The delete
operator removes a property from an object.
It returns true
if the property was removed (or didn’t exist), and false
for non‑configurable properties in non‑strict mode.
In strict mode, attempting to delete a non‑configurable property or an unqualified identifier throws a TypeError
/SyntaxError
.
Syntax
delete object.property
delete object["property"]
delete array[index]
Examples
// ১) বেসিক: প্রপার্টি মুছুন
const ব্যবহারকারী = { নাম: "Mamun", শহর: "Dhaka" };
কনসোল.লগ("নাম" মধ্যে ব্যবহারকারী); // true
কনসোল.লগ(মুছুন ব্যবহারকারী.শহর); // true
কনসোল.লগ("শহর" মধ্যে ব্যবহারকারী); // false
// ২) নেই এমন প্রপার্টি মুছলে true
কনসোল.লগ(মুছুন ব্যবহারকারী.দেশ); // true
// ৩) non‑configurable প্রপার্টি
const obj = {};
Object.defineProperty(obj, "x", { value: 1, configurable: false });
কনসোল.লগ(মুছুন obj.x); // false (non‑strict)
// ৪) strict mode‑এ ত্রুটি
"use strict";
চেষ্টা {
Object.defineProperty(obj, "y", { value: 2, configurable: false });
মুছুন obj.y; // TypeError
} ধরুন (ত্রু) {
কনসোল.সতর্ক("strict:", ত্রু.message);
}
// ৫) অ্যারে—slot মুছে hole হবে (length অপরিবর্তিত)
const A = [10, 20, 30];
কনসোল.লগ(A.length); // 3
মুছুন A[1]; // index 1 remove → hole
কনসোল.লগ(A.length); // 3 (অপরিবর্তিত)
কনসোল.লগ(1 মধ্যে A); // false (slot নেই)
কনসোল.লগ(A[1]); // undefined
// ৬) ভেরিয়েবল/লেক্সিকাল বাইন্ডিং মুছা যায় না
var v = 1; let l = 2; const c = 3;
কনসোল.লগ(মুছুন v); // false (var/ফাংশন‑স্কোপ)
কনসোল.লগ(মুছুন l); // false
কনসোল.লগ(মুছুন c); // false
// "use strict" হলে `মুছুন l`/`মুছুন c`/`মুছুন v`—সরাসরি আইডেন্টিফায়ার মুছতে গেলে SyntaxError
// ৭) Map/Set‑এ delete কাজ করে না
const ম্যাপ = new Map([["a", 1]]);
মুছুন ম্যাপ["a"]; // কিছু হবে না
কনসোল.লগ(ম্যাপ.has("a")); // true
ম্যাপ.delete("a"); // সঠিক উপায়
Notes
delete
only removes properties. For arrays, it removes the slot and leaves a hole (length unchanged); prefer.splice
if you need to shift indices.- Returns
true
if the property doesn’t exist or is successfully removed; returnsfalse
for non‑configurable properties in non‑strict code. - In strict mode, deleting a non‑configurable property throws; deleting an unqualified identifier (e.g.,
delete x
) is a SyntaxError. - Global
var
/function bindings are non‑configurable properties of the global object — they cannot be deleted.let/const
are lexical bindings and are never deletable. - For Map/Set, use
.delete(key)
instead ofdelete
. - Keep one language style (English/Bangla/Banglish) per file.