#47 谁在召唤我?(二)


  • 0
    administrators

    实现一个函数 where,它返回它被调用的时候所在的函数的名字,例如:

    function main () {
      where() // => 'main'
    }
    
    function a () {
      function b () {
        where() // => 'b'
      }
      b()
    }
    
    main()
    a()
    

    where 需要在严格模式下编写。


  • 0

    @ScriptOJ 这题是考怎么绕过过滤么?
    真没想出来怎么不用caller来查函数名


  • 0

    毫无思路+1
    浏览器内部属性也访问不到的样子……


  • 4

    const where = () => {
        let reg = /\s+at\s(\S+)\s\(/g
        let str = new Error().stack.toString()
        let res = reg.exec(str) && reg.exec(str)
        return res && res[1]
    }
    

    真的是黑科技……


登录后回复
 

与 ScriptOJ 的连接断开,我们正在尝试重连,请耐心等待