js arraybuffer转string_JS 里的数据类型转换

任意类型转字符串

  1. String(x)

b57ff81d4db009334495f2542f5eef6d.png
  1. x.toString()

75304aedab01c8de4846428f4b5277ef.png
  1. x + ''

8b5db13e58733629cc1af67567e0f0dd.png

任意类型转数字

  1. Number(x)
  2. parseInt(x, 10)
parseInt​developer.mozilla.org
03ad72cb86da6a8053245b6db4909b38.png
  1. parseFloat(x)
parseFloat​developer.mozilla.org
03ad72cb86da6a8053245b6db4909b38.png
  1. x - 0
  2. +x

任意类型转布尔

  1. Boolean(x)
  2. !!x

内存图

  1. JS 引擎将内存分为代码区和数据区
  2. 数据区分为 Stack(栈内存) 和 Heap(堆内存)
  3. 简单类型的数据直接存在 Stack 里
  4. 复杂类型的数据是把 Heap 地址存在 Stack 里
```javascript
var a = 1
var b = a
b = 2
请问 a 显示是几?  //1
```

```javascript
var a = {name: 'a'}
var b = a
b = {name: 'b'}
请问现在 a.name 是多少?// 'a'
```

```javascript
var a = {name: 'a'}
var b = a
b.name = 'b'
请问现在 a.name 是多少? //'b'
```

```javascript
var a = {name: 'a'}
var b = a
b = null
请问现在 a 是什么?// {name: 'a'}
```

深拷贝

var a = 1
var b = a
b = 2 //这个时候改变 b
a 完全不受 b 的影响
那么我们就说这是一个深拷贝

对于简单类型的数据来说,赋值就是深拷贝。
对于复杂类型的数据(对象)来说,才要区分浅拷贝和深拷贝。

这是一个浅拷贝的例子

var a = {name: 'frank'}
var b = a
b.name = 'b'
a.name === 'b' // true

因为我们对 b 操作后,a 也变了

深拷贝就是对 Heap 内存进行完全的拷贝。

var a = {name: 'frank'}
var b = deepClone(a) // deepClone 还不知道怎么实现
b.name = 'b'
a.name === 'frank' // true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值