toString
null和Undefined转化会报错
很多地方默认的API都是toString
比如:console.log(),obj[1] = 1
老司机用法
1 + ''
true + ''
obj + ''
null + '' → 'null'
undefined + '' → 'undefined'
window.String
和加''功能相同

Boolean()
五个falsy值:
'',0,NaN,null和undefined转化为boolean为true,其他的都是false
所有的对象都是true
老司机用法
前面加!!转化为布尔
转为Number
五种方法

js升级之后在后面加8表示八进制

内存图
内存特点:断电后全部消失 速度快
外存:一直在 速度慢


- 变量提升 var a; var b; var 0 ;
- 相同引用:赋值之后 o与02指向相同内存(没有指针和箭头,是一个虚拟的示意)
简单数据类型:直接stack存储 复杂数据类型:引用heap存储
- 所有的变量和内存(对象)之间的关系都是引用关系
内存的四个题目
第一题:

第二题:



object循环引用


第一行:定义a = undefined, {self:undefined},将这块内存地址给a。
第二行:先声明a是一块内存,然后这块内存的{self:地址}同时把这块内存的地址给a
面试题

parse
因为浏览器是从左向右看,所以a.x = a = {n:2};这句话先看a为34,然后从右向左开始赋值
垃圾回收
如果一个对象没有被引用他就是垃圾将被回收


ie小bug

浅拷贝vs深拷贝
定义
浅拷贝:更改b,a改变
深拷贝:更改b,a不改变
对于简单类型,赋值就是深拷贝
深拷贝示意图:不能是同一个地址
