为了账号安全,请及时绑定邮箱和手机立即绑定

【九月打卡】第11天 BAT大牛带你横扫初级前端JavaScript面试(第二版)

标签:
JavaScript

学习课程名称:BAT大牛带你横扫初级前端JavaScript面试(第二版)
章节名称:课程介绍(新版)
讲师姓名:双越


课程内容:

  1. 值类型和引用类型
  2. typeof和深拷贝
  3. 变量计算

类型基础及背后的工作原理

数据在内存中的分配及传递,值类型和引用类型在内存分配与传递上的区别

在内存分配上:首先要了解内存中栈和堆的概念

栈:先进后出,从上往下的内存结构

堆:后进先出,从下往上的内存结构

当A变量为值类型时,把A赋值给变量B,尝试改变A的值,B不会随之改变,两者互不影响(不干涉);

而A为引用类型时,尝试上述相同赋值操作,之后改变B下面属性的值,则A随之改变;

引用类型为啥就必须赋值内存地址?

主要原因:还是考虑到性能和存储的问题;值类型占有空间比较小,直接赋值上去没有问题,另外赋值上去,相互也没有影响。引用类型在实际工作中,通常都是非常大的,如果直接像值类型一样,赋值上去,首先会太大了,还有就是赋值的时候,会太慢了;所以值类型和引用类型被严格的分离出来,它们的存储机制,赋值机制,拷贝机制也都分离出来。基于内存的空间和CPU计算的耗时来去做的区分,并不是故意为难,不得已而为之。

typeof运算符

可以识别所有值类型

  1. String类型
  2. Number类型
  3. Boolean类型
  4. Null类型
  5. Undefined类型
  6. Symbol类型

识别出函数

判断是否是引用类型(不可再细分)

深拷贝和浅拷贝

浅拷贝 :只复制指向某个对象的指针,而不复制对象本身,相当于是新建了一个对象,该对象复制了原对象的指针,新旧对象还是共用一个内存块

深拷贝:是新建一个一模一样的对象,该对象与原对象不共享内存,修改新对象也不会影响原对象


图片描述

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消