扫码关注官方订阅号
群里一位管理员提出了一个入群提问:var a = [] == [] === !!('i love javascript');问a的值?我用控制台输出得到结果为false,却没有理解。请问怎么理解这个题目?
认证0级讲师
根据运算符优先级 ==》===》=那么先比[ ]==[ ] ,数组是引用类型变量,双等号会隐式转换为比较地址值,两个字面量相等的引用类型变量也是不等的。返回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'));
运算符优先级 == > === > =
==
===
=
对象的比较(复杂类型无法直接用==比较,因为没有重载==运算符)因此翻译如下
var a= (obj1==obj2);//false var b= !true;//false b=!b;//true a= a===b;//false===true?false!
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
根据运算符优先级 ==》===》=
那么先比[ ]==[ ] ,数组是引用类型变量,双等号会隐式转换为比较地址值,两个字面量相等的引用类型变量也是不等的。返回false
第二步 先计算!!("I love js") 这是进行布尔运算,bool 运算中返回false的只有 0 undefined,null,NaN和空字符串,所以这里bool两次返回true
第三步 false===true吗?返回false
所以a是false
运算符优先级
==>===>=对象的比较(复杂类型无法直接用
==比较,因为没有重载==运算符)因此翻译如下