空数组用来做比较时的问题,

(var a = []

var b = "0"

console.log(a==0)

console.log(a==!a)

console.log(b==0)

console.log(a==b)

答案:true,true,true,false

解析:

1.基本数据类型转换会转换成Boolean类型,如果判断对象里面有数组对象,会先调用.valueOf(),再调用.toString()方法

第一个:a是对象类型,会调用valueOf(),再调用toString()方法转换成‘’==0,

3.如果是原始类型的值,原始类型的值会转换成数值再进行比较,调用Number()方法,

第三个:Number(b)=0,转换成0==0

2.null,undefined,NaN以及空字符串取反都为true,其余都为false,

第二个:!优先级高于==,所以a取反成了!【】成了false,(注释:【】是true),前面的a会转换成“”,

“”’===false,所以是true

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。