C++ 在v8'中,ArrayMap函数的callbackfn参数是什么;什么是源代码?

C++ 在v8'中,ArrayMap函数的callbackfn参数是什么;什么是源代码?,c++,v8,C++,V8,内置-array-gen.cc TF_内置(ArrayMap,ArrayBuiltincodesubassembler){ 节点*argc= ChangeInt32ToIntPtr(参数(内置标识符::kargumentscont)); 代码参数args(this,argc); 节点*上下文=参数(内置indescriptor::kContext); Node*new_target=参数(内置indescriptor::kNewTarget); Node*receiver=args.GetRec

内置-array-gen.cc

TF_内置(ArrayMap,ArrayBuiltincodesubassembler){
节点*argc=
ChangeInt32ToIntPtr(参数(内置标识符::kargumentscont));
代码参数args(this,argc);
节点*上下文=参数(内置indescriptor::kContext);
Node*new_target=参数(内置indescriptor::kNewTarget);
Node*receiver=args.GetReceiver();
Node*callbackfn=args.GetOptionalArgumentValue(0,UndefinedConstant());
Node*this_arg=args.GetOptionalArgumentValue(1,UndefinedConstant());
InitIteratingArrayBuiltinBody(上下文、接收方、callbackfn、此参数、,
新的_目标,argc);
发电机运行ArrayBuiltinbody(
“Array.prototype.map”,&ArrayBuiltinCodeStubAssembler::MapResultGenerator,
&ArrayBuiltincodesubassembler::MapProcessor,
&ArrayBuiltincodesubassembler::NullPostLoopAction,
内置::CallableFor(隔离(),内置::kArrayMapLoopContinuation));
}
我不知道这个
callbackfn
是什么意思

这是这个指针吗

但在我看来,第一个参数应该是
这个
指针,所以我很困惑

谢谢你的帮助

查看
Array.prototype.map
:其签名为:

arr.map(function callback(currentValue[, index[, array]]) {...} [, thisArg])
这正是您发现的内置代码中反映的内容,用V8的内部符号表示

receiver
是调用的接收方,即在MDN示例中调用
.map
的数组,
arr

callbackfn
是MDN调用的回调函数,
callback

this_arg
是MDN所称的可选的
thisArg


callbackfn
被该代码视为可选的事实并不反映(也不需要反映)规范;这是安全处理用户没有传递回调函数的情况的最方便的方法。重要的是结果行为,即当
callbackfn
不可调用或缺少时(这是“不可调用”的特例,因为缺少的参数未定义,且未定义的不是函数),会引发
TypeError

感谢您的帮助。还有另一个问题,v8如何判断什么是fastJSArray?根据上下文可能有不同的定义;通常它表示“元素备份存储未处于字典模式”。