Heim > Fragen und Antworten > Hauptteil
Wie unten gezeigt, kann die Schleife nach dem Löschen der Schleifenvariablen immer noch fortgesetzt werden. Liegt es daran, dass diese Variable speziell als nicht bearbeitbar definiert ist, oder erstellt der Compiler eine interne Variable mit demselben Namen im Kontext? für die Schleifennutzung?
for (var j = 0; j < 10; j++) {
delete j;
console.log(j); // 正常输出 0 1 2 3 ...
}
为情所困2017-05-19 10:43:43
因为 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']