思路:

  1. []==[] //false,因为在两边都是相同数据类型时,==是直接比较两边数据,结果为false,因为[]属于引用类型,在两个[]分别指向不同的堆内存。
  2. []==![]:
    • 首先!的优先级大于==,因此运行右边内容,![]是false
    • []==false -> []->0 -> 0==0 ->true

知识总结:

1. 值类型和引用类型

  1. 值类型:
  2. 1. 主要是numberstringbooleanundefined
  3. 2. 数据保存在栈区中
  4. 引用数据类型:
  5. 1. 数组,正则,Math, Date,函数...
  6. 2. 引用类型的存储需要栈和堆共同完成,在栈中存放地址,该地址指向对应的堆内存中的数据

2. ==类型转换规则

  1. 值类型 == 值类型 //相当于 Number(值类型) == Number(值类型)
  2. 引用类型 == 值类型 // 对象转化成原始类型的值,再进行比较

3. 逻辑与或

A||B :验证A的真假,A为真返回A的值,为假返回B的值
A&&B :验证A的真假,A为真返回B的值,为假返回A的值
逻辑与的优先级高于逻辑或