前端面试中,JS代码的坑(堆与栈)


前言

两题均来自大厂
若能理解以下重点,可直接做题,不看解析

💡本文重点

1、当一个对象A的属性名为另一个对象B赋值时候会自动将对象B转化字符串[object Object]

A[B]=20  // 实际上运行的是 A['[object Object]']=20;注意这里的第二个Object首字母大写

在这里插入图片描述

2、.的优先级大于=

✍️A.x=A=B的执行过程

  • 先执行A.x=,若A中无x,则将x赋undefined放入A,A.x=一直停留等待赋值。
  • 再执行A=B,A的指向发生改变,但由于A.x已经悬挂起,还是可以赋值,不影响。
  • 将A的值赋给A.x。

🙌题目一

      let a = {n : 1};   
      let b = a;       
      a.x = a = {n: 2};   

      console.log(a.x)    
      console.log(b.x)     
🌟提炼知识点如下:
  • 引用数据类型的数据存放位置地址存放在(内存大小固定,运行速度快)中;存放在中。
  • 引用数据类型的变量是一个存放在栈内存的指针,该指针指向堆内存的一个地址。
  • 引用数据类型的值可变(基本数据类型不可,改变实际上是创建了一个新的值)
  • 深拷贝与浅拷贝:引用数据类型的拷贝属于浅拷贝(传址)【只有当拷贝引用数据类型时,拷贝才存在浅拷贝与深拷贝之分】
🌟做题步骤
  1. let a = {n : 1};
  • 栈内存中的a指向堆内存中的{n:1}
  • 在这里插入图片描述
  1. let b = a;
  • a浅拷贝给了b,此时b也指向{n:1}
    • 在这里插入图片描述
  1. a.x = a = {n: 2};
  • 按优先级,先执行a.x=,a中无x,所以加了x后赋值undefined。此时a.x=被挂起等待别人赋值。
    • 在这里插入图片描述
    • 执行后面 a = {n: 2} 操作,栈内存中的a改变指向,指向堆内存中的{n:2}
    • 在这里插入图片描述
    • 执行 a.x = a,将a浅拷贝给a.x,即a.x={n:2}【刚刚a.x=已经被挂起,a的指向改变也不会造成影响】
    • 在这里插入图片描述
  1. console.log(a.x)
  • 由上图,a里面没有x,所以输出undefined
  1. console.log(b.x)
  • {n:2}
🌟答案

在这里插入图片描述

🙌题目二

      let a = {a:30};   
      let b = {b:10};       
      let obj={a:10};
      obj[b]=20;
      
      console.log(obj[a])    
🌟提炼知识点如下
  • ES6中属性名表达式的理解:如果属性名表达式是一个对象的话,那么默认情况下会自动将对象转为字符串[object Object]
🌟做题步骤
  1. let a = {a:30};
  • 在这里插入图片描述
  1. let b = {b:10};
    在这里插入图片描述
  2. let obj={a:10};
  • 在这里插入图片描述
  1. obj[b]=20;
  • 由于属性名b是一个对象,所以默认将b转换为字符串[object Object]
    • 在这里插入图片描述
  1. console.log(obj[a])
  • 属性名a是一个对象,默认将a转换为字符串[object Object],即要求输出obj[‘[object Object]’]
  • 答案为20
🌟答案

在这里插入图片描述

参考资料: let a = {n : 1};let b = a;a.x = a = {n: 2};console.log(a.x) console.log(b.x)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 2022年前端面试是一个非常重要的考试,对于想要从事前端开发工作的人来说,非常关键。在面试前,我们需要充分准备自己的面试内容和知识点,以及回答问题的技巧和方法。 首先,面试前需要熟悉相关公司的业务和现在使用的前端框架或技术,这样可以更好地准备自己的面试内容和回答问题。另外,需要重点掌握HTML、CSS和JavaScript等基本知识,以及常用的UI框架和库,如jQuery、Bootstrap、Vue.js、React等。此外,还需要关注最近的前端技术和趋势,如WebGL、Node.js、TypeScript等。 在面试,需要注意的是回答问题的技巧和方法。首先,需要仔细听取面试官的问题,理解问题的核心和重点,尽可能地表达自己的回答思路和理解深度。其次,需要尽量举一些实际的例子或场景来说明自己的观点和经验,这样可以更加生动地表达自己的想法。最后,需要注意回答问题的语言表达和态度,尽可能地表现自己的专业水平和态度认真。 总体而言,2022前端面试csdn是一个很重要的考试,需要提前充分准备自己的知识和技能,在面试过程表现得专业、认真。这样才能更好地展现自己的实力,得到期望的前端开发工作。 ### 回答2: 2022前端面试csdn是一项非常重要的任务,因为前端开发是目前互联网行业最热门的职位之一。要成功通过前端面试,需要具备扎实的前端基础知识和开发经验,同时也需要具备一定的面试技巧和实际表现能力。 在准备前端面试时,需要学习并熟悉HTML、CSS和JavaScript前端基础知识,理解网页布局、响应式设计、DOM操作等常见技术,并熟练掌握常用的前端框架和库,如Angular、React、Vue等,还需了解一些基本的设计模式和算法,如代理模式和二分查找等。 在面试,需要展现自己的技术实力和团队合作能力,对于面试官的提问,要结合自身经验和知识深入分析,并提供解决方案,同时也要注意沟通和表达技巧。进入面试后,要表现得自信且谦虚,积极主动地回答问题并展示自己的优点和特长,同时也要主动询问面试环节的问题与需求,以便更好地为公司做出贡献。 综上所述,要通过2022前端面试csdn,需要全方位的准备和积极的心态,提前准备,熟练掌握前端知识与技能,参加面试前做好应对策略和交流技巧的准备,这样才能成功地展示自己的实力和获得自己心仪的工作机会。 ### 回答3: 2022年前端面试已经获得广泛关注,吸引了大量技术人员的参与。作为一名前端开发者,在准备面试时,有几点要特别注意。 首先是技术知识的深度和广度。前端开发者需要了解HTML、CSS和JavaScript的基础知识,同时掌握流行的前端框架和库,如Angular、React、Vue等。此外,对于跨平台开发、性能优化、SEO等方面也需要有相应的了解。 其次是实战经验。虽说前端开发是一门技术学科,但对于面试官来说,实际项目和团队协作经验也是重要考察因素。要想在选手脱颖而出,需要在自己的技术博客或Github上分享项目经验,展示自己优秀的代码实现。 最后是沟通能力和团队协作能力。前端开发不仅仅是技术能力,对于工作的沟通和协作同样重要。面试时,面试官可能会问到你的与其他团队成员沟通和协作的经验,因此在举例时,展示自己的团队合作精神和领导力也很重要。 总之,在准备2022年前端面试时,需要注重技术深度和广度、实战经验以及沟通和协作能力等方面的提升。同时,修改简历并投递简历时一定要认真,格式要清晰易读,表达要准确简洁。祝大家面试顺利,取得好成绩!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值