Javascript 为什么新函数()在参数中返回注释/**/?

Javascript 为什么新函数()在参数中返回注释/**/?,javascript,node.js,Javascript,Node.js,在铬47和nodejs v0.12中 新函数('myArg','return“my Function body”;') 给出了以下结果: function anonymous(myArg /**/) { return "my function body" } 为什么函数参数中有注释?如下所示,这是一个解决办法,可以解决涉及不平衡块注释的边缘情况。如以下文件所述: 函数NewFunctionString(参数、函数标记){ var n=arguments.length; var p='';

在铬47和nodejs v0.12中

新函数('myArg','return“my Function body”;')

给出了以下结果:

function anonymous(myArg /**/) {
  return "my function body"
}
为什么函数参数中有注释?

如下所示,这是一个解决办法,可以解决涉及不平衡块注释的边缘情况。如以下文件所述:

函数NewFunctionString(参数、函数标记){
var n=arguments.length;
var p='';
如果(n>1){
p=ToString(参数[0]);
对于(变量i=1;i0)?ToString(参数[n-1]):“”;
返回“('+function_-token+'('+p+'){\n'+body+'\n})”;
}

最初添加此选项是为了捕获如下情况并引发错误:

Function("/*", "*/){alert('bad');")
这将导致语法错误,但在他们添加额外的
/**/
之前,它将被转换为:

function anonymous(/*) {
  */){alert('bad');
}
这相当于

function anonymous(/*...*/) {
  alert('bad');
}
因此没有语法错误。更改后,加上额外的注释,现在变成:

function anonymous(/*/**/) {
  */){alert('bad');
}
它正确地给出了一个语法错误:

Uncaught SyntaxError: Unexpected token *(…)

而且。

他们需要它来修复ES6的参数解析器。等等,我会在V8引擎源代码中的简短解释(如注释)中挖掘bug讨论:“如果形式参数包含不平衡的块注释,则必须拒绝该函数。由于JavaScript不允许嵌套注释,我们可以包含一个尾部块注释来捕捉该注释。”因此,这只是让
'myArg/*'
不抛出错误的一种方法?或者什么。@KevinB是的,这似乎是原因。我想知道为什么它不抛出一个错误,以防你放了一个不平衡的评论,而不是允许它,并用这个变通方法修复它,我实际上是指-似乎Firefox也会这样做
Uncaught SyntaxError: Unexpected token *(…)