首页 > 其他 > 详细

有趣的"=="与"==="

时间:2019-08-01 17:42:27      阅读:73      评论:0      收藏:0      [点我收藏+]
console.log([]==![]);//true
//"=="会进行类型转换,转换成统一类型进行比较
// !符号优于==,[]boolean值为TRUE,所以![]就是FALSE,
// 根据转换规则,右边转换成number类型为0,左边[]转换成number类型为0
// 所以两者相等。
console.log([]===![]);//false
//===不会进行类型转换
const a ={
value:[3,2,1],
valueOf:function(){//valueOf是固定方法,返回原始类型的值
return this.value.pop();
},
}
console.log(a==1&&a==2&&a==3);//true
//js解析会将a转换成number类型,所以结果会是true
//首先你需要知道object.prototype.valueOf()
//对象a调用valueOf返回了ToObject(value),因为
//value是number类型,所以返回了一个number的对象,
//值为参数,最终js引擎将其转换成原始类型,所以最终的结果才会true.

var value = 0;
Object.defineProperty(window, ‘a‘, {
get: function() {
return this.value += 1;
}
});
console.log(a===1&&a===2&&a===3);//true
//主要是利用了property这个函数

有趣的"=="与"==="

原文:https://www.cnblogs.com/angle-xiu/p/11283742.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!