linq结果转换object_19.07.26 JS 里的数据类型转换&普通类型和对象的区别

JS 里的数据类型转换

JS一共有七种数据类型,分别是:

基本数据类型:数值(number)、字符串(string)、布尔(boolean)、null、undefined和symbol。

复杂数据类型:对象(object)

七种数据类型之间有的可以互相转换。

1.转换为string

number 

2.转换为boolean

5个falsy值(转换结果为false): NaN、0、null、undefined、''
其余转换结果均为true
转换方: 1. Boolean()
        2. !!0 === false

3.转换为number

转换方法:1. Number('1') === 1
          2. parseInt('1',10) === 1     parseInt('s',10) === NaN     parseInt('1s',10) === 1 
          3. parseFloat('1.23') ===1.23
          4. '1' - 0 === 1
          5. + '1.23' === 1.23

内存图

基本数据类型直接存在Stack(栈内存)。

复杂数据类型只在stack内存一个地址,而内容存在Heap(堆内存)中,通过地址产生联系。

例题:

var a = {n:1}
var b = a
a.x = a = {n:2}

alert(a.x) //undefined
alert(b.x) //{object Object} alert会把结果转换成字符串

06a8398d287efd4d6f817494ff575132.png

垃圾回收

如果一个对象没有被引用,它就是垃圾,将被回收。

例题:

var fn = function() {}
document.body.onclick = fn
fn = null
问: function(){}是否是垃圾?
答: 不是

8695a1ed3e55f0839738535cefd6f945.png

深拷贝和浅拷贝

var a = 1
var b = a
b = 2
//a = 1 ,b变不影响a
//深拷贝(基本类型赋值都是深拷贝,所以只讨论对象)
var a = {name: 'a'}
var b = a
b.name = 'b'
//a.name = 'b'
//b变导致a变,浅拷贝
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值