JS 里的数据类型转换

目录

  • 类型转换
  • 内存图
  • 深拷贝VS浅拷贝
JS的7种数据类型

类型转换

一、其他类型转字符串
3种方式:
1.xxx.toString() —— 常规方法

  var n =1
  n.toString()
  "1"
  var object ={name:'ajing'}
  object.toString()
  "[object Object]" //对象的toString方法,得不到我们想要的

null不行,报错(Cannot read property 'toString' of null
undefined不行,报错(Cannot read property 'toString' of undefined

2.xxx+ '' —— 老司机方法(推荐)

1 + ''
'1'
//
null + ''
"null"
//
true + ''
'true'
//
var obj = {}
obj + ''
"[object Object]"
1 + '1' //等同于(1).toString() + '1'
'11'

3.window.String(xxx)

var n=1
window.String(1)
"1"

window.String({})
"[object Object]"

window.String(null)
"null"

二、其他类型转boolean
1.Boolcan(xxx) —— 常规方法

Boolean(1)
true

Boolean(0)
false

Boolean('')
false

Boolean(' ')
true

2.!!xxx —— 老司机方法

!!{}
true

!!{name:'ajing'}
true

5个falsy值:number中(0 NaN)、string中('')、null、undefined

object全都为true

三、其他类型转number

来自方姐

内存图

浏览器中JS占的内存分两个区域——代码区和数据区,数据区又分两个区——Stack(栈内存)Heap(堆内存)
数字64位 字符16位

内存值分布

用内存图分析解决问题

问题1

问题2

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

内存垃圾回收题
function要不要回收?

图解

深拷贝VS浅拷贝

深拷贝(a赋值给b,b变a不变),基本类型的赋值就是深拷贝
浅拷贝(a赋值给b,b变a也变)

浅拷贝

end

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。