当前位置: 首页 > news >正文

长安网站建设制作公司营销一体化营销平台

长安网站建设制作公司,营销一体化营销平台,科技巅峰,中国电商公司排名探究 delete 的一些细节,起源于刚刚做过的一道笔试,原题如下: a 1; const b 2; console.log(delete a); console.log(delete b); // 输出结果是? // 答:true false我可从来没用过 delete 的返回值,但凡…

探究 delete 的一些细节,起源于刚刚做过的一道笔试,原题如下:

a = 1;
const b = 2;
console.log(delete a);
console.log(delete b); 
// 输出结果是?
// 答:true false

我可从来没用过 delete 的返回值,但凡犹豫一秒都是对自己的不自信,所以立马选择 undefined,笔试结束后回想起来,怎么会出这么奇怪的题,于是自己实际试了一下,真是不试不知道,一试吓一跳啊!!!

2023-09-21-21-32-59

delete 关键字是其实有返回值的!并且 delete 还是有一些细节/规则的

  • 如果删除的属性不存在于对象本身,delete 不起任何作用,但仍会返回 true !

  • delete 只会删除对象自身属性,不会删除对象原型链上的属性!

    function A() {}
    A.prototype.b = 1;
    const a = new A();
    console.log(delete a.b, a.b); // true 1 (删除对象自身不存在属性时返回true,并且无法删除原型链上的属性)
    
  • 不可配置的属性不能被删除,返回 false !

  • 无法直接删除有声明的变量(包括函数参数),返回 false !

    delete variable 在严格模式下抛出 SyntaxError 错误

    • 任何使用 var 声明的属性不能从全局作用域或函数的作用域中删除,因为即使它们可能附加到全局对象上,它们也是不可配置的。
    • 任何使用 let 或 const 声明的属性不能够从它被声明的作用域中删除,因为它们没有附加到任何对象上。

现在看来同程旅行还是保守了,要是现在的我,我估计会出下面的题:

a = 1; // 绑定到了 globalThis 对象中
var b = 2; // 绑定到了 globalThis 对象中
const obj = {};
const d = 3;
let e = 4;
console.log(Object.getOwnPropertyDescriptor(globalThis, 'a').configurable); // true
console.log(Object.getOwnPropertyDescriptor(globalThis, 'b').configurable); // false(通过var定义的全局变量虽然会被绑定到globalThis中,但它是不可配置的!)console.log(delete a); // true (a不是一个有声明的变量,这时会去globalThis上找,把globalThis.a给删了)
console.log(delete b, b); // false 2 (下面单独说)
console.log(delete obj, obj); // false {} (对象 obj 没有被删,因为 obj 是 const 声明)
console.log(delete obj.c, obj.c); // true undefined (删除一个原本就不存在的属性返回 true )
console.log(delete d, d); // false 3 (变量 d 没有被删,因为它是 const 声明)
console.log(delete e, e); // false 4 (变量 e 没有被删,因为它是 let 声明)
console.log(delete f); // true(删除一个原本就不存在的属性返回 true )

globalThis 就是全局对象,浏览器下指向 window、node下指向 global。

console.log(delete b, b);没有把 b 删除,我们有两种解释:

  1. 跟 const、let 声明一样,var 声明的变量无法直接被删除。
  2. b 没被删除是因为,当 delete 去 globalThis 上找它时,发现它是不可配置的,所以无法删除。

为了简单理解和减少歧义,我更认同 1 的解释(你可以想一下 2 的解释会引发哪些歧义),如果您有更好的理解,欢迎评论区留言!

var 声明的全局变量是不可配置的这个细节在“谈谈 var、const、let 的区别”的这个面试题中可以主动展开说一下🧐

http://www.yayakq.cn/news/761324/

相关文章:

  • 做房地产咨询网站怎么赢利郑州seo优化哪家好
  • 长春企业建站系统模板做团购的家居网站有哪些
  • 河北邢台做网站百度号码认证平台官网首页
  • 网站内容更改教程建设法规 课程网站
  • 不良网站正能量免费下载萧山大江东规划国土建设局网站
  • 企业网站招聘可以怎么做长沙感染人数最新消息
  • 建设微网站哪家竞价托管专业
  • 湛江市住房和城乡建设局网站学网站建设需要什么
  • 网站开发是用模版还是纯手打微信网页版是什么
  • 网站建设成都哪家公司好遂平网站建设
  • 软件开发网站开发公司如何给网站加cdn
  • 网站和浏览器不兼容佛山市手机网站建设公司
  • 如何制作一个动态的网站的登录详细步骤页面网站开发者工具下载
  • 营业执照年审登录入口网站建站前seo注意
  • 鄂尔多斯网站制作公司做二手的网站都有哪些
  • 图片站wordpress做平面设计有前途吗
  • 网站seo谷歌林业网站模板
  • 酒厂网站模板如何给网站做外部优化
  • 电脑哪里做模板下载网站wamp建设网站大致步骤
  • 用eclipce做登录网站青岛最大的设计院
  • 手机网站模板下载免费实现微信绑定登录网站
  • 常州网站建设联系电话WordPress多人聊天插件
  • 网站备案管谁要幕布厦门网站设计公司找哪家厦门电商系统
  • 网站建设 乐达云创wordpress重复链接
  • 免费虚拟空间网站网站建设需要哪些费用
  • 沂水网站开发昆明网站推广优化
  • 网站宜昌上海设计网站开发
  • 金融企业网站建设ai绘制logo
  • 专业网页制作培训机构数字营销网站主页优化
  • 网站图片优化器郑州整形网站建设