思路:
- []==[] //false,因为在两边都是相同数据类型时,==是直接比较两边数据,结果为false,因为[]属于引用类型,在两个[]分别指向不同的堆内存。
- []==![]:
- 首先!的优先级大于==,因此运行右边内容,![]是false
- []==false -> []->0 -> 0==0 ->true
知识总结:
1. 值类型和引用类型
值类型:
1. 主要是number,string,boolean,undefined
2. 数据保存在栈区中
引用数据类型:
1. 数组,正则,Math, Date,函数...
2. 引用类型的存储需要栈和堆共同完成,在栈中存放地址,该地址指向对应的堆内存中的数据
2. ==类型转换规则
- 值类型 == 值类型 //相当于 Number(值类型) == Number(值类型)
- 引用类型 == 值类型 // 对象转化成原始类型的值,再进行比较
3. 逻辑与或
A||B :验证A的真假,A为真返回A的值,为假返回B的值
A&&B :验证A的真假,A为真返回B的值,为假返回A的值
逻辑与的优先级高于逻辑或