尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
你知道 delete 删除属性时的一些细节吗?
博主推荐前些天发现了一个巨牛的人工智能学习网站通俗易懂风趣幽默忍不住分享一下给大家。点击跳转到网站探究 delete 的一些细节起源于刚刚做过的一道笔试原题如下a1;constb2;console.log(deletea);console.log(deleteb);// 输出结果是// 答true false我可从来没用过 delete 的返回值但凡犹豫一秒都是对自己的不自信所以立马选择 undefined笔试结束后回想起来怎么会出这么奇怪的题于是自己实际试了一下真是不试不知道一试吓一跳啊delete 关键字是其实有返回值的并且 delete 还是有一些细节/规则的如果删除的属性不存在于对象本身delete 不起任何作用但仍会返回 true delete 只会删除对象自身属性不会删除对象原型链上的属性functionA(){}A.prototype.b1;constanewA();console.log(deletea.b,a.b);// true 1 删除对象自身不存在属性时返回true并且无法删除原型链上的属性不可配置的属性不能被删除返回 false 无法直接删除有声明的变量包括函数参数返回 false delete variable在严格模式下抛出 SyntaxError 错误任何使用 var 声明的属性不能从全局作用域或函数的作用域中删除因为即使它们可能附加到全局对象上它们也是不可配置的。任何使用 let 或 const 声明的属性不能够从它被声明的作用域中删除因为它们没有附加到任何对象上。现在看来同程旅行还是保守了要是现在的我我估计会出下面的题a1;// 绑定到了 globalThis 对象中varb2;// 绑定到了 globalThis 对象中constobj{};constd3;lete4;console.log(Object.getOwnPropertyDescriptor(globalThis,a).configurable);// trueconsole.log(Object.getOwnPropertyDescriptor(globalThis,b).configurable);// false通过var定义的全局变量虽然会被绑定到globalThis中但它是不可配置的console.log(deletea);// true a不是一个有声明的变量这时会去globalThis上找把globalThis.a给删了console.log(deleteb,b);// false 2 下面单独说console.log(deleteobj,obj);// false {} 对象 obj 没有被删因为 obj 是 const 声明console.log(deleteobj.c,obj.c);// true undefined 删除一个原本就不存在的属性返回 true console.log(deleted,d);// false 3 变量 d 没有被删因为它是 const 声明console.log(deletee,e);// false 4 变量 e 没有被删因为它是 let 声明console.log(deletef);// true删除一个原本就不存在的属性返回 true globalThis 就是全局对象浏览器下指向 window、node下指向 global。console.log(delete b, b);没有把 b 删除我们有两种解释跟 const、let 声明一样var 声明的变量无法直接被删除。b 没被删除是因为当 delete 去 globalThis 上找它时发现它是不可配置的所以无法删除。为了简单理解和减少歧义我更认同 1 的解释你可以想一下 2 的解释会引发哪些歧义如果您有更好的理解欢迎评论区留言var 声明的全局变量是不可配置的这个细节在“谈谈 var、const、let 的区别”的这个面试题中可以主动展开说一下
RELATED

相关推荐

STM32CubeMX的配置相关知识

STM32CubeMX的配置相关知识

功能基础配置 RCC 时钟 在STM32中,有5个时钟源,为HSI、HSE、LSI、LSE和PLL。从时钟频率来分可以分为高速时钟源和低速时钟源,在这5个中HIS、HSE以及PLL是高速时钟,LSI和LSE是低速时钟。从来源可分为外部时钟源和内部时钟源&…

📅 2026/9/15 10:39:45
老Mac如何安装最新macOS:OpenCore Legacy Patcher 5步复活旧机型完整指南

老Mac如何安装最新macOS:OpenCore Legacy Patcher 5步复活旧机型完整指南

老Mac如何安装最新macOS:OpenCore Legacy Patcher 5步复活旧机型完整指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher OpenCore Legacy Patche…

📅 2026/9/15 10:34:44
OpenProject 12.0.8 补丁版本解读:关键缺陷修复与工时、通知模块底层实现分析

OpenProject 12.0.8 补丁版本解读:关键缺陷修复与工时、通知模块底层实现分析

OpenProject 12.0.8 补丁版本解读:关键缺陷修复与工时、通知模块底层实现分析 【免费下载链接】openproject OpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative wi…

📅 2026/9/15 10:34:44
MORE NEWS

更多资讯

📰

基于Elasticsearch的RAG混合检索实战:部署、调优与避坑

最近我又在做RAG技术相关的项目,这次从零搭了一套基于Elasticsearch的检索增强生成方案。之前图省事直接用现成的向量数据库,结果在真实业务里被虐得很惨:文档里全是专有名词,靠向量召回查不准,过滤条件一多性能就崩。…

📰

YOLOv10 零基础部署:3 条命令装好,5 分钟跑通实时目标检测

YOLOv10 零基础部署:3 条命令装好,5 分钟跑通实时目标检测 【免费下载链接】yolov10 YOLOv10: Real-Time End-to-End Object Detection [NeurIPS 2024] 项目地址: https://gitcode.com/GitHub_Trending/yo/yolov10 你想给监控摄像头加一层实时检…

📰

Elasticsearch太慢?TypeSense为何快5倍及迁移实战指南

做搜索的人,几乎绕不开Elasticsearch,也就是大家挂在嘴边的ES。我自己的路径也是从单机ES一路做到三个节点、五个节点的集群,维护成本肉眼可见地往上飙。真正让我下决心研究替代方案的,是一次电商站内搜索的压测:相同接…

📰

PLC与编码器实现皮带输送系统智能控制方案

1. 项目背景与核心价值在工业自动化领域,皮带输送系统是物料运输的关键设备。传统皮带卸料小车多采用继电器控制或基础PLC程序,存在定位精度低、故障率高、维护困难等问题。我们设计的这套智能控制系统,通过PLC编码器HMI的架构,实…

📰

Python复合材料层合板性能分析:从刚度矩阵到失效判据全流程

简介:这份Python代码包面向复合材料力学方向的学生与工程师,围绕经典层压理论(CLT)实现复合层定义、层压板铺层、应力应变分布计算与失效准则判定,覆盖杨氏模量、刚度矩阵、强度校核等核心环节,适合课程设计…

📰

Redis Search vs Elasticsearch:结构化查询性能对比与选型指南

1. 项目概述:为什么“比ES快5倍”不是营销话术,而是可验证的工程现实“推荐一个比ES快5倍的搜索引擎”——这句话刚看到时,我第一反应是皱眉。在 Elasticsearch 领域摸爬滚打十多年,从 2.x 版本手写 mapping 到现在调优 8.x 的向量…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬