首页 > 一个简单问题

一个简单问题

群里一位管理员提出了一个入群提问:
var a = [] == [] === !!('i love javascript');
问a的值?
我用控制台输出得到结果为false,却没有理解。请问怎么理解这个题目?


  1. 运算符优先级 == > === > =

  2. 对象的比较(复杂类型无法直接用==比较,因为没有重载==运算符)
    因此翻译如下

var a= (obj1==obj2);//false
var b= !true;//false
b=!b;//true
a= a===b;//false===true?false!

根据运算符优先级 ==》===》=
那么先比[ ]==[ ] ,数组是引用类型变量,双等号会隐式转换为比较地址值,两个字面量相等的引用类型变量也是不等的。返回false
第二步 先计算!!("I love js") 这是进行布尔运算,bool 运算中返回false的只有 0 undefined,null,NaN和空字符串,所以这里bool两次返回true
第三步 false===true吗?返回false
所以a是false


var a = (([] == []) === (!!'I love JavaScript'));

[] == [] //false;
!!('i love javascript') // true

false === true
【热门文章】
【热门文章】