有没有办法调用嵌套在另一个函数中的函数?

时间:2021-07-12 14:58:01

标签: javascript

假设我有以下功能:

function a() {

  function b() { 
    console.log('b') 
  }

  console.log('a')
  b()
}

a()

从外部作用域,当我调用 function a() 时,我得到以下结果

a()
> 'a'
> 'b'

有什么方法可以让我直接从外部作用域调用 function b() 而不修改原始函数?从外部范围,我只能访问 a。像这样:

a.b()
> 'b'

我需要任何可能的肮脏解决方案。

2 个答案:

答案 0 :(得分:0)

b 运行后,没有任何东西包含对 a() 的任何引用,因此完全无法访问。取决于最终目标是什么 - 作为一个非常肮脏的解决方案,您可以a.toString() 然后将内部部件转储到 eval 中。

答案 1 :(得分:-1)

如果您从 a 返回对该函数的引用,您可以这样做,但您必须修改它。

function a() {

  function b() { 
    console.log('b') 
  }

  console.log('a')
  b()

  return b;
}


const b = a()
b();
相关问题