数据类型的相互转换
1.任意数据类型转字符串
- 1、String(x)
String(true)//"true"
String(null)//"null"
String(undefined)//"undefined"
String({})//"[Object Object]"
toString()
true.toString() //"true"
null.toString() //Uncaught TypeError: Cannot read property 'toString' of null
// at <anonymous>:1:6
undefined.toString() //Uncaught TypeError: Cannot read property 'toString' of undefined
//at <anonymous>:1:11
{}.toString() //Uncaught SyntaxError: Unexpected token .
({}).toString() //"[object Object]"
老司机用法:x+''
true+'' // 'true'
null+'' // 'null'
undefined+'' // 'undefined'
{}+'' // 0
var o = {}
o+ '' //{object Object}
2.任意数据类型转数字
1.Number(x)
2.parselnt(x,10)
MDN
3.parseFloat(x)
MDN
4.x-0
5.+x
3.任意数据类型转布尔值
1.Boolean(x)
2.!!x(老司机用法)
垃圾回收机制
- GC 垃圾回收 如果一个对象没有被引用,那么它就是垃圾,将会被回收。
- 引用包括事件触发引用,如果一个函数被页面上的事件引用了,也不会算作垃圾被回收。
- 解决办法:将事件赋值null,就表示不再引用。
- IE6 BUG 无法正常的在页面关闭时,将没有人引用的垃圾正常的清除。设置window.onunload- 事件,将所有的事件都设置为null。
- 内存泄露:表示该被标记为垃圾的数据没有被标记,内存就会被永久的占用。除非把整个浏览器关闭,否则浏览器就会吃很多的内存,无法再分配新的内存用于存储数据。