• js 实现 a == 'juejin' && a == 666 && a == 888


    什么是隐式转换


    在 javascript 中,当运算符在运算时,如果两边数据类型不统一,CPU就无法进行运算,这时 javascript 会自动将运算符两边的数据做一个数据类型转换,转成一样的数据类型再计算。这种无需程序员手动转换,而由编译器自动转换的方式就称为隐式转换。

    当引用类型和基础类型进行运算时,会将引用类型转换为基础类型。在 javascript 中,每个引用类型都有他们的内置方法,其中有两个内置方法 valueOf() 和 toString():

    • toString(): 返回对象的字符串表示。
    • valueOf(): 返回对象对应的字符串、数值或布尔值表示。通常与 toString()的返回值相同。

    他们能够将 Object 类型隐式转换为基础类型,从而进行运算和比较。


    const a = {
     count: 0, // 记录当前是第几次比较
     valueOf() {
       this.count++;
       if(this.count === 1) {
         return 'juejin'
       } else if(this.count === 2) {
         return 666
       } else {
         return 888
       }
     }
    }
    
    console.log(a == 'juejin' && a == 666 && a == 888)  // true 

    原文地址:https://juejin.cn/post/6975693930096492580

  • 相关阅读:
    富文本的使用
    sql
    # 多线程:为啥无法避免并发修改异常?(假设有两个线程,线程A,线程B),怎么避免并发修改异常?
    File&&字节流
    IO-字符流
    第二周疑问点
    异常
    常用API-Object+String
    学习JavaSE过程中的疑问点(第一周)
    JavaOOP
  • 原文地址:https://www.cnblogs.com/fuyao/p/14925697.html
Copyright © 2020-2023  润新知