标签:
隐式转换在js中通常可以通过parseInt(), Number(), String(), Boolean()等函数转换成对应的数据类型, 但通常为了简便, 我们会用特殊的写法进行转换, 比如:
var a = 5; console.log( a + ‘‘ ); // 输出‘5‘, 将number类型转成string类型
//这里是将string转换成number类型 console.log( +‘56‘ ); //输出 56, 等价于Number(a) console.log( -‘56 ); //输出-56 console.log( +‘‘ ); //0 console.log( +‘34A‘ ); // 输出NaN console.log( -‘34A‘ ); // 输出NaN console.log( parseInt(‘34A‘, 10) ); //输出34; //parseInt第二个参数最好传入10, 如果不传, 在ES3中, 默认是转换成8进制 console.log( +[] ); //0
//将string或number转成boolean值 console.log( !5 ); //false, 此过程会先将5转成true, 然后取非 console.log( !!5 ); //true, 等价于Boolean(5) console.log( !!‘2‘ ); //true console.log( !!‘‘ ); //false console.log( !!0 ); //false console.log( !![] ); //true console.log( !!{} ); //true console.log( !!null ); //false console.log( !!undefined ); //false console.log( !!/abc/g ); //true
总结:
因此, [] == ![] 得到的是true, 因为右边的 ![] 会被先转换成 false, 然后因为是==且两边数据类型不一样, 所以两边会被转成number进行比较, 左边的[]转成number是0, 右边false也转成0, 所以相等返回true
需要注意一点: null == undefined 比较中得到的是true
以上纯属个人总结, 如有错误, 欢迎指正.
标签:
原文地址:http://www.cnblogs.com/flfwzgl/p/4540463.html