JS 里的数据类型转换

类型转换

任意类型转字符串

  1. String(x)
  2. x.toString()
  3. x + ‘’

任意类型转数字

  1. Number(x)
  2. parseInt(x, 10)
  3. parseFloat(x)
  4. x - 0
  5. +x

任意类型转布尔

  1. Boolean(x)
  2. !!x

五个falsy值,其余全为true

  1. 数字0
  2. NaN
  3. ''或""(空字符串)
  4. null
  5. undefined
    如:
    !!(null) 结果显示:false
    !!(0) 结果显示:false
    !!(1) 结果显示:true
    !!(‘Mindy’) 结果显示:true

内存图

  1. 第一题:
var a = 1
var b = a
b = 2
请问 a 显示是几?  

a=1

  1. 第二题:
var a = {name: 'a'}
var b = a
b = {name: 'b'}
请问现在 a.name 是多少?

a.name=‘a’

  1. 第三题:
var a = {name: 'a'}
var b = a
b.name = 'b'
请问现在 a.name 是多少?

a.name=‘b’

4.第四题:

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

a.name=‘a’

JavaScript数据存储

数字64位
字符16位
Stack栈 heap堆
简单的值存stack中(除object之外的所有)
object存堆中,地址存放于stack中(引用)

浅复制&深复制

对于简单类型的数据来说,赋值就是深拷贝,如上面的例题一。
对于复杂类型的数据(对象)来说,才要区分浅拷贝和深拷贝。
一个浅拷贝的例子:(对b进行操作后,a的值也变了)

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

一个深拷贝的例子:(对b进行操作,a无动于衷)

var a = {name: 'frank'}
var b = deepClone(a) // deepClone 还不知道怎么实现
b.name = 'b'
a.name === 'frank' // true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值