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) }
  • 相关阅读:
    Linux下安装maven
    非连续性及反脆弱
    高手是怎么练成的
    思维型大脑
    编写文档五轮模式
    Nginx初识
    ida快捷键
    ida+gdb调试任意平台
    gcc常用命令使用
    ida调试ios应用
  • 原文地址:https://www.cnblogs.com/EnSnail/p/9706398.html
Copyright © 2011-2022 走看看