如下所示,在循环中,循环的变量删除后,循环仍能进行,是因为这个变量被特殊定义为了不可编辑,还是说编译器在上下文中创建了一个内部的同名的变量供循环使用?for (var j = 0; j < 10; j++) { delete j; console.log(j); // 正常输出 0 1 2 3 ...}
1 回答
一只萌萌小番薯
TA贡献1795条经验 获得超7个赞
因为 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.propertydelete object['property']
添加回答
举报
0/150
提交
取消