如下所示,在循環中,循環的變數刪除後,循環仍能進行,是因為這個變數被特殊定義為了不可編輯,還是說編譯器在上下文中創建了一個內部的同名的變數供循環使用?
for (var j = 0; j < 10; j++) { delete j; console.log(j); // 正常输出 0 1 2 3 ... }
因為 delete只能對實例屬性有作用,不能直接delete變數或函數。 你執行以下指令,回傳的將是false,表示刪除無效。
// 删除变量的场景 var j = 1; delete j; // 返回false console.log(j); // 依然是1 // 删除函数的场景 function x() { console.log('hello'); } delete x; // 返回false x(); // 输出'hello', 函数依然有效 // 删除对象属性的场景 var a = {prop: 1}; delete a.prop; // 返回true,表示删除成功 console.log(a.prop); // undefined
附: delete操作符語法, 來自 MDN文件
delete expression
其中的expression是一個物件屬性的引用
delete object.property delete object['property']
因為 delete只能對實例屬性有作用,不能直接delete變數或函數。
你執行以下指令,回傳的將是false,表示刪除無效。
附: delete操作符語法, 來自 MDN文件
其中的expression是一個物件屬性的引用