`new Function()`是否会在JavaScript中创建闭包概念的异常?

`new Function()`是否会在JavaScript中创建闭包概念的异常?,javascript,closures,Javascript,Closures,通常,函数会记住它在特殊属性中的出生位置。它引用了创建它的词法环境 但是当使用新函数创建函数时,我得到了一个错误 我的代码: function fun() { let x = 12; let y = new Function('console.log(x)'); return y; } fun()(); // error: x is not defined new Function是否不支持javascript的闭包概念,或者我搞错了什么 提前感谢这是否回答了您的问题new函

通常,函数会记住它在特殊属性中的出生位置。它引用了创建它的词法环境

但是当使用
新函数
创建函数时,我得到了一个错误

我的代码:

function fun() {
  let x = 12;

  let y = new Function('console.log(x)');

  return y;
}

fun()(); // error: x is not defined

new Function
是否不支持javascript的闭包概念,或者我搞错了什么


提前感谢

这是否回答了您的问题
new函数
不允许访问周围的作用域,而
eval
允许访问(只要直接调用)。我想说
eval
是这里的怪胎,而不是
new Function
,因为向某个函数传递字符串神奇地允许动态访问当前执行上下文的局部范围变量是不寻常的。。。你自己无法重现这种行为。