全等和相等详解及面试
来源:互联网 发布:微信淘宝客开源系统 编辑:程序博客网 时间:2024/04/30 03:39
1. == 相等 比较的值 会有隐式类型转换
2. === 全等 比较的是值和数据类型。
//console.log(1 == "1"); //true
//console.log(1 === "1"); //false
//console.log(1 == true); //true
//console.log(1 === true); //false
//console.log(null == undefined); //true
//console.log(null === undefined); //false
//console.log(NaN == NaN); //false NaN永远不等于其他的值,包括他自身。
变态面试题1
//console.log([] == ![]); //true
解析
有取反运算,故先算后面的的。
//[] == !true
//[] == false //注意
当一基本类型和一个复杂类型进行比较时会先调用复杂类型的valueOf方法,如果valueOf方法获取的值为空,
会再调用其原型上的toString方法。
//[].valueOf() == false
值还是[],则调用toString方法
//[] == false//[].toString() == false
console.log([].toString())//"";可检验
console.log(typeof [].toString())//String.
举例说明
//var arr = [];
//console.log(arr + 1); //"1"前面得到一个空字符串
故得到
//false == false
//true
注意点
//如果一个复杂的数据类型和一个基本的数据类型进行运算,会调用这个对象的valueOf方法,取去他的原始值再和这个基本数据类型进行运算.//如果valueOf取不到一个值,就调用这个对象的toString方法,得到的值再和这个基本数据类型进行运算。
//console.log([].valueOf());
//console.log([].toString());
变态面试题2
console.log({}==!{})//false
解析
//var obj = {};
//console.log(obj.valueOf()); //{}//console.log(obj.toString()); // "[object Object]"
//console.log(obj + 1); //"[object Object]1"
{}==!{}//对象取反为false.
{}==false//简单类型和复杂类型比较。。前面的【object object】为真
故表达式为false
详细解析:
//console.log({} == !{}); //false
//{} == !{}
//{} == !true
//{} == false
//{}.valueOf() == false
//{} == false
//{}.toString() == false
//"[object Object]" == false
//true == false
//false
阅读全文
1 0
- 全等和相等详解及面试
- JavaScript相等和全等
- 相等和全等
- javascript==(相等)与===(全等)详解
- 相等,全等.... in SV
- JavaScript中相等和全等操作符的差异
- 相等==和全等===
- PHP中全等(===)和相等(==)的区别
- php中全等(===)和相等(==)的用法区别
- Js 相等与全等的区别
- javaScript的 全等 和 非全等
- 全等 和不全等
- 全等
- php中的全等于和不全等于 不等于的 用法详解
- ActionScript3 等于和全等运算符
- JavaScript 相等(==)与全等(===)操作符
- JS中的相等操作符(==)与全等操作符(===)
- hashcode()和equals()及HashSet判断对象相等
- 电梯算法
- 大数据(三十二)HBASE【Hbase JavaAPI访问HBase】
- 通过 sysprocesses 解决Sql死锁问题
- 自学列式List/Map/Collections
- 模拟实现memmove函数
- 全等和相等详解及面试
- MyBatis的xml处理小于、大于、等于号
- maven
- Qt通过QNetworkAccessManager实现Http get方法文件下载
- SQL详解
- linux mbr磁盘分区管理--理论篇
- 【Docker】基于已有私库服务进行参数配置(四)
- 10 OF 100DAYS
- Android 源码解析之WindowManager添加窗口