JS之函数传参与深浅拷贝原理

很多问题看似复杂,没有章法,事实上却有着千丝万缕的联系,陈道长此次阐述因为数据类型不同而引发的问题,本文主要探讨JS函数参数传递规则、浅拷贝、深拷贝的原理。

变量类型和存储

首先要明确js中变量的特点,JS变量本身没有类型,只有值有类型。这句话怎么理解呢,先看下面这段代码。

let a = 42
typeof a //'number'

注意返回的是’number’,不是number,typeof检测的不是a的类型,而是42的类型,也就是a是没有类型的,只有a的值有类型。

JS总共有7种数据类型:Number、String、Boolean、Null、Symbol、Undefined、Object。Object是引用类型,其他的是基本类型。至于数组和函数属于Object的子类型。不过typeof 一个函数的时候 会返回’function’,这是为了彰显函数是一等公民的地位。它要特殊一点。

我们在声明一个变量时,会给变量进行赋值,变量在存储的时候也有区别。**基本类型值存放在栈中,可以直接访问。引用类型值存放在堆内存中。**很关键的一点:JS是不允许直接访问内存的,所以当一个变量的值是Object时,它保存的只是一个指针,指向的是

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值