js数据类型隐式转换

var a = {
    value: 2,
    toString: function(){
        return ++this.value;
    }
}
if(a == 3 && a == 4){
    console.log("js is amazing!");
}
js is amazing

原理分析:

  1. 因为a是个对象,对象与原始类型进行比较的时候会将对象转换成原始类型,对象转换成原始类型就是依据valueOftoString的返回值。
  2. 先调用valueOf返回它本身,不是原始类型,因此再调用toString
  3. 第一次判断a==3的时候toString的值为++2也就是3,以此类推第二次判断的是a转换后的值为4,所以if条件成立。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容