delete
Baseline
åºãå©ç¨å¯è½
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2015å¹´7æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
delete æ¼ç®åã¯ããªãã¸ã§ã¯ãããããããã£ãé¤å»ãã¾ããããããã£ã®å¤ããªãã¸ã§ã¯ãã§ããããã®ãªãã¸ã§ã¯ãã¸ã®åç
§ããã以ä¸åå¨ããªãå ´åããã®ããããã£ãä¿æãããªãã¸ã§ã¯ãã¯æçµçã«èªåçã«è§£æ¾ããã¾ãã
試ãã¦ã¿ã¾ããã
const employee = {
firstName: "Maria",
lastName: "Sanchez",
};
console.log(employee.firstName);
// äºæ³ãããçµæ: "Maria"
delete employee.firstName;
console.log(employee.firstName);
// äºæ³ãããçµæ: undefined
æ§æ
delete object.property
delete object[property]
ã¡ã¢:
delete æ¼ç®åã®æ¬¡ã®å¼ã¯ãããå¹
åºãæ§æã許容ããã¾ãããæå³ã®ããåä½ãããããã®ã¯ä¸è¨ã®æ¹æ³ã®ã¿ã§ãã
弿°
è¿å¤
ããããã£ãèªå·±ã®æ§æä¸å¯ããããã£ã§ãã£ãå ´åã峿 ¼ã¢ã¼ãã§ãªããã° false ãè¿ãã¾ãããã以å¤ã®å ´å㯠true ãè¿ãã¾ãã
ä¾å¤
TypeError-
峿 ¼ã¢ã¼ãã§ããã®ããããã£ãèªå·±ã®æ§æä¸å¯ããããã£ã§ããå ´åã¯çºçãã¾ãã
ReferenceError-
objectãsuperã§ããå ´åã«çºçãã¾ãã
解説
delete æ¼ç®åã¯ãåªå
é ä½ãä»ã®åé
æ¼ç®åï¼ä¾ï¼typeofï¼ã¨åçã§ãã
ãããã£ã¦ãããåªå
度ã®é«ãæ¼ç®åã§æ§æãããä»»æã®å¼ãåãå
¥ãã¾ãããã ãã以ä¸ã®å½¢å¼ã¯å³æ ¼ã¢ã¼ãã«ããã¦æ©æã®æ§æã¨ã©ã¼ãçºçãã¾ãã
delete identifier;
delete object.#privateProperty;
ã¯ã©ã¹ã¯èªåçã«å³æ ¼ã¢ã¼ãã§åä½ãããã©ã¤ãã¼ãè¦ç´ ã¯ã¯ã©ã¹æ¬ä½å
ã§ã®ã¿åæ³çã«åç
§ã§ããããããã©ã¤ãã¼ãè¦ç´ ãåé¤ããããã¨ã¯æ±ºãã¦ããã¾ããã delete èå¥å ã¯ãèå¥å ãã°ãã¼ãã«ãªãã¸ã§ã¯ãã®æ§æä¸å¯ããããã£ãåç
§ãã¦ããå ´åã«æ©è½ããå¯è½æ§ãããã¾ããããã®å½¢å¼ã¯é¿ããã¹ãã§ããã代ããã« globalThis ãæ¥é è¾ã¨ãã¦ä»ããã¹ãã§ãã
ãã以å¤ã®å¼ãåãå ¥ãããã¾ããããããã¯æå³ã®ããåä½ã«ã¯ã¤ãªããã¾ããã
delete console.log(1);
// 1 ãåºåãã true ãè¿ãããä½ãåé¤ãããªã
delete æ¼ç®åã¯ãæå®ãããããããã£ããªãã¸ã§ã¯ãããåãé¤ãã¾ããåé¤ãæåããå ´åãtrue ãè¿ãã失æããå ´å㯠false ãè¿ãã¾ããä¸è¬çã«ä¿¡ãããã¦ãããã¨ã¨ã¯ç°ãªã (ãããã C++ ã«ããã delete ã®ãããªä»ã®ããã°ã©ãã³ã°è¨èªã®å½±é¿ã§ãã)ãdelete æ¼ç®åã¯ãç´æ¥çã«ã¡ã¢ãªã¼ãè§£æ¾ãããã¨ã¯ããã¾ãããã¡ã¢ãªã¼ã®ç®¡çã¯åç
§ãåãããã¨ã§éæ¥çã«è¡ããã¾ãã詳細ã¯ã¡ã¢ãªã¼ç®¡çãã¼ã¸ãåç
§ãã¦ãã ããã
以ä¸ã®æ¬¡ã®ã·ããªãªãèæ ®ãããã¨ãéè¦ã§ãã
- åé¤ãããã¨ããããããã£ãåå¨ããªãå ´åã
deleteã¯ä½ãããã«trueãè¿ãã¾ãã deleteã¯èªå·±ã®ããããã£ã«ã®ã¿å¹æãããã¾ãããªãã¸ã§ã¯ãã®ãããã¿ã¤ããã§ã¼ã³ä¸ã«åãååã®ããããã£ãåå¨ããå ´åãåé¤å¾ããªãã¸ã§ã¯ãã¯ãããã¿ã¤ããã§ã¼ã³ä¸ã®ããããã£ã使ç¨ãã¾ãã- æ§æä¸å¯ã®ããããã£ã¯åé¤ã§ãã¾ãããããã«ã¯
MathãArrayãObjectã®ãããªçµã¿è¾¼ã¿ãªãã¸ã§ã¯ãã®ããããã£ãObject.defineProperty()ã®ãããªã¡ã½ããã§ç·¨éä¸å¯ã¨ãã¦çæãããããããã£ãå«ã¾ãã¾ãã - 夿°ï¼é¢æ°ã®å¼æ° ãå«ãï¼ã®åé¤ã¯ãä¸ååä½ãã¾ããã
delete variableã¯å³æ ¼ã¢ã¼ãã§ã¯SyntaxErrorãçºçãã峿 ¼ã¢ã¼ã以å¤ã§ã¯ä½ã®å¹æãããã¾ãããvarãã¤ãã¦å®£è¨ããã夿°ã¯ãã°ãã¼ãã«ã¹ã³ã¼ãã¾ãã¯é¢æ°ã®ã¹ã³ã¼ãããåé¤ã§ãã¾ããããããã¯ã°ãã¼ãã«ãªãã¸ã§ã¯ãã«æ·»ä»ããã¦ããå¯è½æ§ãããã¾ãããæ§æä¸å¯ã§ããããã§ããletãconstã§å®£è¨ããã夿°ã¯ããªãã¸ã§ã¯ãã«æ·»ä»ããã¦ããªããããå®ç¾©ãããã¹ã³ã¼ãå ããåé¤ãããã¨ã¯ã§ãã¾ããã
ä¾
>delete ã®ä½¿ç¨
ã¡ã¢: 次ã®ä¾ã§ã¯ãæé»çã«ã°ãã¼ãã«å¤æ°ãçæãããèå¥åãåé¤ããããããªã©ã峿 ¼ã¢ã¼ãã§ã¯ç¦æ¢ããã¦ãã峿 ¼ã¢ã¼ãé対å¿ã®æ©è½ã®ã¿ã使ç¨ãã¦ãã¾ãã
// empCount ããããã£ãã°ãã¼ãã«ã¹ã³ã¼ãã«ä½æããã
// var ã使ç¨ãã¦ãããããããã¯æ§æä¸å¯ã¨ãªã
var empCount = 43;
// ã°ãã¼ãã«ã¹ã³ã¼ãã« EmployeeDetails ããããã£ã使ããã
// "var" ãªãã§å®ç¾©ãã¦ãããããæ§æä¸å¯ã¨ãªãã
EmployeeDetails = {
name: "xyz",
age: 5,
designation: "Developer",
};
// delete ã使ç¨ãã¦ãªãã¸ã§ã¯ãããããããã£ãåé¤ãããã¨ãã§ããã
delete EmployeeDetails.name; // true ãè¿ã
// ããããã£ãåå¨ããªãå ´åã§ãã£ã¦ãã delete 㯠"true" ãè¿ãã¾ãã
delete EmployeeDetails.salary; // true ãè¿ã
// EmployeeDetails ã¯ã°ãã¼ãã«ã¹ã³ã¼ãã®ããããã£ã§ããã
delete EmployeeDetails; // true ãè¿ã
// éã«ã empCount 㯠var ã使ç¨ããã¦ããããæ§æä¸å¯ã§ããã
delete empCount; // false ãè¿ã
// delete ã¯æ§æä¸å¯ã®çµã¿è¾¼ã¿éçããããã£ã«ã¯å¹æããªãã
delete Math.PI; // false ãè¿ã
function f() {
var z = 44;
// delete ã¯ãã¼ã«ã«å¤æ°åã«ã¯å¹æããªãã
delete z; // false ãè¿ã
}
delete ã¨ãããã¿ã¤ããã§ã¼ã³
次ã®ä¾ã§ã¯ããããã¿ã¤ããã§ã¼ã³ä¸ã«åãååãæã¤ããããã£ãããå ´åã«ããªãã¸ã§ã¯ãã®èªèº«ã®ããããã£ãåé¤ãã¦ãã¾ãã
function Foo() {
this.bar = 10;
}
Foo.prototype.bar = 42;
const foo = new Foo();
// foo.bar ã¯èªèº«ã®ããããã£ã«é¢é£ä»ãããã¦
// ãã¾ãã
console.log(foo.bar); // 10
// foo ãªãã¸ã§ã¯ãã«ããèªèº«ã®ããããã£ã
// åé¤ãã¾ãã
delete foo.bar; // true ãè¿ã
// foo.bar ããããã¿ã¤ããã§ã¼ã³ä¸ã§ã¾ã
// å©ç¨ã§ãã¾ãã
console.log(foo.bar); // 42
// ãããã¿ã¤ãä¸ã®ããããã£ãåé¤ãã¾ãã
delete Foo.prototype.bar; // true ãè¿ã
// "bar" ããããã£ã¯ Foo ä¸ã§åé¤ãããã®ã§
// ç¶æ¿ãããªããªãã¾ããã
console.log(foo.bar); // undefined
é åã®è¦ç´ ã®åé¤
é
åã®è¦ç´ ãåé¤ããã¨ããé
åã® length ã¯å½±é¿ãåãã¾ãããããã¯é
åã®æå¾ã®è¦ç´ ãåé¤ãã¦ãä¿æããã¾ãã
delete æ¼ç®åãé
åã®è¦ç´ ãåé¤ããã¨ãè¦ç´ ã¯é
åãããªããªãã¾ãã æ¬¡ã®ä¾ã§ã¯ãtrees[3] ã delete ã§åé¤ããã¾ãã
const trees = ["redwood", "bay", "cedar", "oak", "maple"];
delete trees[3];
console.log(3 in trees); // false
ããã«ãã£ã¦ã空ã®ã¹ããããæã¤çé
åã使ããã¾ããããé
åã®è¦ç´ ãåå¨ããã¾ã¾æªå®ç¾©ã®å¤ã¨ãããå ´åã¯ãdelete æ¼ç®åã®ä»£ããã« undefined å¤ã使ç¨ãã¦ãã ãããæ¬¡ã®ä¾ã§ã¯ãtrees[3] ã« undefined ãå²ãå½ã¦ã¦ãã¾ãããé
åã®ãã®è¦ç´ ã¯åå¨ããã¾ã¾ã§ãã
const trees = ["redwood", "bay", "cedar", "oak", "maple"];
trees[3] = undefined;
console.log(3 in trees); // true
代ããã«ãé
åã®å
容ã夿´ãã¦é
åè¦ç´ ãåé¤ãããå ´åã¯ãsplice() ã¡ã½ããã使ç¨ãã¦ãã ãããæ¬¡ã®ä¾ã§ã¯ãsplice() ã使ç¨ãã¦é
åãã trees[3] ãåé¤ãã¦ãã¾ãã
const trees = ["redwood", "bay", "cedar", "oak", "maple"];
trees.splice(3, 1);
console.log(trees); // ["redwood", "bay", "cedar", "maple"]
æ§æä¸å¯ã®ããããã£ã®åé¤
ããããã£ãæ§æä¸å¯ã¨ãã¦ãã¼ã¯ããã¦ããå ´åãdelete ã¯ä½ã®å¹æããªããfalse ãè¿ãã¾ãã峿 ¼ã¢ã¼ãã§ã¯ããã㯠TypeError ãçºçãã¾ãã
const Employee = {};
Object.defineProperty(Employee, "name", { configurable: false });
console.log(delete Employee.name); // false ãè¿ã
var ã¯ãdelete æ¼ç®åã§åé¤ã§ããªãæ§æä¸å¯ã®ããããã£ã使ãã:
// "nameOther" 㯠var ãã¼ã¯ã¼ããä»ãã¦è¿½å ãããã®ã§ããããã
// æ§æä¸å¯ã¨ãã¦ãã¼ã¯ããã
var nameOther = "XYZ";
// ãã®ã°ãã¼ãã«ããããã£ã«ã¯ä»¥ä¸ã®ããã«ã¢ã¯ã»ã¹ãããã¨ãã§ãã
Object.getOwnPropertyDescriptor(globalThis, "nameOther");
// {
// value: "XYZ",
// writable: true,
// enumerable: true,
// configurable: false
// }
delete globalThis.nameOther; // false ãè¿ã
峿 ¼ã¢ã¼ãã§ã¯ããããã¯ä¾å¤ãçºçãã¾ãã
ã°ãã¼ãã«ããããã£ã®åé¤
ã°ãã¼ãã«ããããã£ãæ§æä¸å¯ãªå ´åï¼ä¾ãã°ãç´æ¥ããããã£ä»£å
¥ã«ããï¼ããã®ããããã£ã¯åé¤ãããã¨ã ã§ãããã®å¾ã°ãã¼ãã«å¤æ°ã¨ãã¦ããããåç
§ãã㨠ReferenceError ãçºçãã¾ãã
globalThis.globalVar = 1;
console.log(globalVar); // 1
// 峿 ¼ã¢ã¼ãã§ãªãå ´åã`delete globalVar` ã使ç¨ãããã¨ãã§ãã
delete globalThis.globalVar;
console.log(globalVar); // ReferenceError: globalVar is not defined
仿§æ¸
| 仿§æ¸ |
|---|
| ECMAScript® 2027 Language Specification > # sec-delete-operator > |