js类型转换的方法
6个falsy值
内存图
数据的引用
垃圾回收
深拷贝vs浅拷贝
转成字符串
String(x)
String(x)是一个window的全局方法
x.toString()
null和undefined没有.toString()方法
|
|
x + ‘’ 与空字符串相加
这种方法比较简便,推荐用这种方法转成字符串
转成布尔值
Boolean(x)
注意!空对象是true
!!x
转成数字
Number(x)
|
|
parseInt(x)
parseInt('123')
面试题
|
|
parseFloat(x)
parseFloat(3.14)
x - 0 推荐这种
|
|
+x 取正
|
|
6个falsy值
0、NaN、空字符串、false、null、undefined
所有对象的falsy值都是true12345var a = false;var b = new Boolean(false);if(a){console.log(1)}if(b){console.log(2)} 结果是2,因为b是个对象
!注意:{}
是true值,因为{}
是空对象,所有对象都是true!!
内存图
- JS 引擎将内存分为代码区和数据区
我们只研究数据区
- 数据区又分为 Stack区(栈内存) 和 Heap区(堆内存)
- 简单类型的数据直接存在 Stack栈内存 里
- 复杂类型(object)把地址存到 Stack栈内存 区,把地址对应的数据存到 Heap堆内存 区
o2 = o
;并不是修改了o2在Heap的数据,而是将o2的地址修改成o的地址,因此2访问o对应的数据
面试题-对象的引用
|
|
|
|
|
|
|
|
面试题-垃圾回收
如果一个对象没有被引用(就是说没有地址指向它),它就是垃圾,将会被回收
|
|
浅拷贝vs深拷贝
|
|