其他类型转字符串类型
- 
toString方法: - number 转字符串: - var n = 1; n.toString() // 输出字符串 "1"
- boolean 转字符串: - var a = true; a.toString() // 输出字符串 "true"
- null 无法通过 toString 转字符串,会报错。 
- undefined 同样无法通过 toString 转字符串,会报错。 
- object 转字符串:不论object中是什么转字符串都会变成 - "[object Object]"
 
- String( )方法: - String(1) //把数字1转为字符串1
- 
更便捷的方法: 在需要转换的数值类型后面或前面加一个空字符串 (与上面不同,可以转换 null 与 undefined 类型): 1 + '' '1' '' + null "null" '' + undefined 'undefined'原理:如果在 + 号的左右任意一边有字符串,那它就会尝试把另一边也转换为字符串相加 
其他类型转布尔类型
Boolean(1)
true
Boolean(2)
true
Boolean(0)
false
Boolean('')
false
Boolean(' ')
true
Boolean('嘤嘤嘤')
true
Boolean(null)
false
Boolean(undefined)
false
Boolean({})
true
Boolean({name : 'name'})
true
简便写法:
!! true
true
!! 1
true
!! 0
false
... //与上面的方法结果相同
五个特殊值
- number中只有 0 NaN 转为布尔为false 
- 字符串中只有 空字符串 '' 转为布尔为false 
- null undefined 转布尔类型都是 false 
- object 转布尔类型都是 true 
详细了解,搜索:MDN Falsy
转number类型
- Number('1') === 1 
- 
全局函数 (parse 解析): - 转整数:parseInt('1', 10) === 1 第一个变量是要转换的字符串,第二个变量是转换后的数字类型,比如当前是十进制
- 转小数:parseFloat('1.25') === 1.25
- '1'.
 
- 
简洁的写法 "1" - 0 1 "10" - 0 10 "1.25" - 0 1.25 + "1" 1 + "10" 10 + "1.25" 1.25 + "-1" -1
案例
循环a.self.self....
正确写法:
var a = {}
a.self = a
a.self.self.self
{self : {...}}
错误写法:
var a = {self : a}
{self : undefined} //由于 a 在 var 时对象 a 中的 a 还不存在,所以 self 的值会变为 undefined
引用类型面试题
var a = {n:1}
var b = a
a.x = a = {n:2} //此处会先确定a的值是什么,再进行赋值运算
alert(a.x) // undefined
alert(b.x) // [object Object]
GC 垃圾回收 (一个页面被使用后,浏览器回收的那个 页面的内存)
- 如果一个对象没有被引用,它就是垃圾,将被回收。 
- IE6 有bug 它无法将 document.onclick 的事件回收 
深拷贝 浅拷贝
深拷贝
对于所有的基本类型,简单的赋值,就是深拷贝
var a = 1
var b = a
b = 2
// a = 1 ,b 的更改并没有影响 a,这就叫做深拷贝
浅拷贝
对象类型
var a = {
    name : 'x'
}
var b = a
b.name = 'y'
// 此时 a.name 也是 ‘y’










