经典面试题a == 1 && a== 2 && a== 3

简介: 经典面试题a == 1 && a== 2 && a== 3

一般要重写 valueOf 和 toString


        //toString  valueOf
        const a = {
            current: 1,
            toString() {
                return this.current++
            }
        }
        if (a == 1 && a == 2 && a == 3) {
            console.log('a')
        }


应为 == 有隐试转换


  alert( a )    //50       执行了toString() 执行了valueOf()
    alert( +a )    //30       执行了toString()
    alert( a>40 )    //false       执行了toString()
    alert( a==30 )    //true       执行了toString()
    alert( a===30 )    //false
 //最后这个未输出任何字符串,个人猜想是这样的:全等比较时,js解析器直接先判断类型是否一样,明显一个是Object,一个是Number,所以直接不相等,根本不需要再去求值了。


目录
相关文章
|
1月前
|
Java
== 和 equals 有什么区别?
本文解释了在Java中,"=="用于比较基本数据类型的值或引用类型的引用是否相等,而"equals"默认也是比较引用,但常常被重写为比较对象的值是否相等,例如在String和Integer类中,并且提供了如何自定义"equals"方法的示例。
73 0
== 和 equals 有什么区别?
|
4月前
|
JavaScript 前端开发
continue、return、break三者的区别
continue、return、break三者的区别
|
5月前
|
存储 Java
equals与==区别
equals与==区别
40 0
|
6月前
break,continue,return的区别深度剖析
break,continue,return的区别深度剖析
|
6月前
|
C#
c#一文读懂continue、return、break区别
c#一文读懂continue、return、break区别
52 0
|
6月前
|
JavaScript 前端开发 安全
== 和 ===什么区别呀?
== 和 ===什么区别呀?
110 0
equals 和 == 的区别?
equals 和 == 的区别?
80 0
|
6月前
! [ ] == ! [ ] 和 ! [ ] == [ ] 结果是什么? 为什么?
! [ ] == ! [ ] 和 ! [ ] == [ ] 结果是什么? 为什么?
41 0
|
JavaScript 前端开发
== 和 ===区别,分别在什么情况使用
== 和 ===区别,分别在什么情况使用
74 1