js循环时的变量标记是种怎样的数据

发布于 2022-09-04 19:43:47 字数 194 浏览 29 评论 0

如下所示,在循环中,循环的变量删除后,循环仍能进行,是因为这个变量被特殊定义为了不可编辑,还是说编译器在上下文中创建了一个内部的同名的变量供循环使用?

for (var j = 0; j < 10; j++) {
  delete j;
  console.log(j); // 正常输出 0 1 2 3 ...
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

硪扪都還晓 2022-09-11 19:43:47

因为 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']
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文