js类型转换

1+[]  // =>"1"

1+{}  //=>"1[object Object]"

{}+[] //=>0

[]+{} //=>[object Object]

 

{}+[] :根据语句优先原则  {}被理解为复合语句块,因此相当于 {}; +[]   。[]为空,结果为0

console.log({}+[]) : js把()中的语句当做一个表达式,因此{}不能被理解为语句块,而被理解为"[object Object]" + "",console.log("[object Object]"+"")打印结果为[object Object]。

其实 console.log({}+[])和[]+{}的结果相同,原理相同,{}作为右值出现被理解为对象直接量

{}+[] 和[]+{}结果不相同,是不是很神奇。

 

[] == ![] //true 参考https://www.zhihu.com/question/29615998/answer/45667956

 

0/0 //=>NaN

1/0 //=>Infinity

1/-0 //=>-Infinity 

-1/Infinity //=>-0

 

Number.MAX_SAFE_INTEGER //=>9007199254740991

Number.MAX_VALUE //=>1.7976931348623157e+308

Number.MIN_SAFE_INTEGER //=>-9007199254740991

Number.MIN_VALUE =>//5e-324

posted @ 2017-07-12 17:12  *﹏漸洐漸薳〆…  阅读(83)  评论(0编辑  收藏  举报