zoukankan      html  css  js  c++  java
  • js面试题

    题目:如何让下面的表达式成立,成功打印出 123 ?

    if(a==1&&a==2&&a==3){console.log(123)}

     解决方案:

    // 1. 利用Object.definePrototype
    
    (function () {
        let i = 0;
        Object.defineProperty(window, 'a', {
            get () { return ++i; }
        })
    })()
    
    if (a == 1 && a == 2 && a == 3) { console.log(a, 123) }
    // 2. 利用隐式转换 valueOf
    
    var a = {i: 0};
    a.valueOf = function () { return a.i += 1; }
    
    if (a == 1 && a == 2 && a == 3) { console.log(a, 123) }
    // 3. 利用隐式转换 toString
    var a = {i: 0};
    a.toString = function () {
      return a.i += 1;  
    }
    
    if (a == 1 && a == 2 && a == 3) { console.log(a, 123) }
    // 4. 利用隐式转换 [Symbol.toPrimitive]
    var i = 0;
    var a = {
        [Symbol.toPrimitive]() { return ++i ;}
    }

    if (a == 1 && a == 2 && a == 3) { console.log(a, 123) }
  • 相关阅读:
    第5周作业
    第四周JAVA作业
    第三周JAVA学习
    第二周JAVA学习日志
    有关JAVA学习
    Swift 页面跳转
    Swift 登录判断
    单元测试学习
    WCF学习心得
    初次使用Oracle
  • 原文地址:https://www.cnblogs.com/EnSnail/p/9706398.html
Copyright © 2011-2022 走看看