一个简单问题

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

阅读 2.4k
4 个回答

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

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

false === true
var a = (([] == []) === (!!'I love JavaScript'));
  1. 运算符优先级 == > === > =

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

var a= (obj1==obj2);//false
var b= !true;//false
b=!b;//true
a= a===b;//false===true?false!
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题