new Function(..) 在调试模式下返回 Chrome 58 中的未定义



我在Chrome 58中遇到了一些奇怪的new Function(...)行为。在开发人员控制台中执行在调试点暂停的new Function(...)时,将返回undefined而不是新创建的函数。

JSBIN 示例:http://jsbin.com/raluwu/edit?html,output

<!DOCTYPE html>
<html>
<body>
  <script>
    // open the developer console in Chrome 58, 
    // and run this code until the debug point
    debugger;
    //eval('debugger');
    // when at the debug point, enter the following in the console:
    //
    //     var f = new Function ('a', 'return a + a');
    //     // f should be a function but is undefined when in debug mode
    // 
    //     console.log(f(2));   
    //     // should return 4, but throws "Uncaught TypeError: f is not a function"
    // without debug point, everything runs fine:
    var f = new Function ('a', 'return a + a');
    console.log(f(2)); // 4
  </script>
</body>
</html>

这是Chrome中的错误吗?

我做了更多的挖掘,发现了关于这个问题的错误报告:

https://bugs.chromium.org/p/chromium/issues/detail?id=705149

所以,这确实是Chrome中的一个错误

最新更新