(立下flag)每日10道前端面试题-10 关于let const十问(1)

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Web前端全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注前端)
img

正文

如果真的想将对象冻结,应该使用 Object.freeze 方法。

查看Object.freeze的用法与描述

Object.freeze()方法可以冻结一个对象。一个被冻结的对象再也不能被修改;冻结了一个对象则不能向这个对象添加新的属性,不能删除已有属性,不能修改该对象已有属性的可枚举性、可配置性、可写性,以及不能修改已有属性的值。此外,冻结一个对象后该对象的原型也不能被修改。freeze() 返回和传入的参数相同的对象。

6但是这样就能保证 对象冻结了吗?

不,因为Object.freeze()只能冻结基本数据类型的属性,若是属性还是引用类型的话,那就冻结不了了,因此,除了将对象本身冻结,对象的属性也应该冻结。下面是一个将对象彻底冻结的函数。

7既然你提到了Object.freeze,你能说下他的原理 吗

Object.freeze()的功能主要就是使对象属性冻结起来,这个功能跟 上面模拟const 类似,可以用Object.definedProperty()

Object.definedProperty()方法可以定义对象的属性的特性。如可不可以删除、可不可以修改、访问这个属性的时候添油加醋等等。。 所以,我们可以这样写:

8 但是这样就完整了没,你有没有发现问题呢?

emmmmm,的确还有个问题,就是Object.definedProperty()只是设置了 对象的属性,也就是说,要是此时我使用 给对象添加属性,还是可以的,因此还有个问题要解决,就是使对象不能 添加新的属性,而要限制 拓展功能,我想到了Object.seal(),

查看Object.seal介绍:

**Object.seal()**方法封闭一个对象,阻止添加新属性并将所有现有属性标记为不可配置。当前属性的值只要原来是可写的就可以改变。

因此用Object.seal()Object.definedProperty()就可以实现Object.freeze()

9 ES6之前真的没有块级作用域吗?

可以看下这道题,答案是什么

正确答案:内部是 21,外部是 1;

这个玄妙之处确实就在这个块级作用域 if 里面。

假如我们去掉 if 看题。

这道题估计没人好意思去问了,毫无疑问,输出的 a 都是 21 啊。

实际上,首先,if 里面的 function a(){} 会声明提升,将声明" var a" 移到函数级作用域最前面,将函数定义移到块级作用域最前面,预解析如下:

函数本身是【 定义函数名变量 指针指向 函数内存块】。

函数提升是在块级作用域,但是函数名变量是函数级别的作用域。所以在块级的函数定义(原始代码函数的声明位置)的时候,会将函数名变量同步到函数级作用域,实际上,只有这个时候,在块级作用域外才能访问到函数定义。

预解析如下:

关于此题查看更多

10 下面代码输出情况

可见在全局作用域中 var 声明的变量 会被挂载到 window中,而let 不会 而我在读一本关于es6书的时候 看到这一段话

ES6 将全局方法 parse!nt ()和 parseFloat ()移植到了 Number 对象上面,行为完全 >保持不变 这样做的目的是逐步减少全局性方法,使得语言逐步模块化。

最后

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-5hvRzxnv-1713108826414)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值