其他类型->string
.toString()
其中null和undefined会报错,object不会得到你想要的结果- 函数
.String()
和+ ''功能一样强大 - 其他类型 + ''
+如果发现两边有一个字符串,就会想把另外一个也变成字符串。null和undefined都会被改变
1 + '1'
//'11'
null + ''
//'null'
其他类型->boolean
- 函数
Boolean() !!+ 其他类型
!! 1
//true
如果一个位置预期是布尔值,那么JS会将它自动转为布尔值。
falsy是在Boolean上下文中被认定会被转化为false的值,一共有6个。
- false
- 0
- NaN
- undefined
- null
- "" or ''
其他都会被转为true
其他类型->number
Number('1') === 1
parseInt('1s', 10) === 1 //会从头开始转,遇到不能转的就停止,然后输出当前值。后面的10代表转为10进制
parseFloat('1.23') === 1.23
'1' - 0 === 1 //也可以转浮点数,常用这个
+ '1' === 1 //+代表取它原本的数值
- '-1' === 1 //-代表取它原本值的负数
内存图

b = a时,是把Stack中的地址进行复制。

一个面试题

a.x = a = {n:2};在执行的时候,两个a都已经确定了是取的34那个地址。浏览器是先从左往右看的,然后从右往左算。
垃圾回收
如果一个对象没有被引用,它就是垃圾,就会被回收(浏览器什么时候想回收就什么时候回收)。


fn = null之后,fn不会使用Heap。但是function由于被docunment罩着,所不会被回收。
IE6垃圾算法的bug(内存泄漏)
IE6无法在tab关闭的时候,把那些onclick对应的函数标记为垃圾。正常的浏览器看到document死了,会把右边的三个干掉。
解决方法:

深拷贝和浅拷贝
我拷贝了你的值之后,我变了,你不变 ----深拷贝
我拷贝了你的值之后,我变了,你也变了----浅拷贝
(因为我拷贝你的时候,其实只是跟你取的地址相同,我没有独立地再去把你取的地址中的内容拷贝一份)\