第三章 原生函数
- [[class]
第四章 强制类型转换
- 抽象类型转换: String() => toString() Number() => toNumber() Boolean() => toBoolean()
String() toString array,object,JSON.stringify(obj,[function][arr],space)内的不安全值有 undefined,function,symbol,在序列化对象时忽略相应属性,在数组序列化时返回null
Number() Number("") = 0 Number([]) = 0
- Boolean() 假值:
null,undefined,"",+0,-0,NaN,false 非假值则为真
toPrimitive() 抽象操作,当非基本类型时调用valueOf()后 toString()某一时刻至处于基本类型时在进行强制类型转化
Number([42]) //42
- 类型转换
- 数字和字符串的转化: Number()/parseInt(string,bin)/+'32'/+new Date()/~|(32位数上~(下|)取整,~ = -(x+1) |(或) 转化成32位数) String()/toString()/JSON.stringify()
parseInt(string,bin) 参数为字符串进行解析,故会将传入参数强制转化为字符串,第2个参数为转化整数后的进制
- 布尔类型转化: Boolean()/ !!/! 非假值则为真
Boolean([]) = true 对Boolean类型的值进行+操作,操作数是什么就强制转化为什么类型 3 + true = 4; '3' + true = '3true'
- || && 数据选择符 || : 第一个操作数为true返回第一操作数否则返回第2个操作数 a ? a : b &&第一个操作数为false返回第一操作数,否则返回第二个操作数 a ? b : a;&& 和 ||具有短路现象, && 优先级高于||
- 符号类型的转换:转化成数字将会出错,+隐式转化成字符串会出错,可以显示强制化成字符串,转化成boolean类型为true

3. ==(宽松比较)和===(严格比较)
- 有无类型转换
- == typeof 比较类型,不同则进行强制类型转化
boolean,string都是转化成Number在进行比较的,案例如下;null == undefined 除此外null undefined不等于(==)任何值
- === typeof 比较类型,相同则比较值
- 常规比较案例

- 对象和非对象向比较 进行抽象操作,Object(a) 用相应的原生对象对数据进行封装

- 转化成数字进行比较 '\n','',' '多个空格转化成数字时为0

- 抽象关系比较 a < b a >= b !(a < b) 先调用toPrimitive 出现非字符串,则toNumber()强制类型转换,否则都为字符串根据ASCII码进行比较
第五章 语法