这个有未定义参数的函数怎么能运行?

How can this function which has undefined argument be able to run?

中,代码的本质是:

network.on("afterDrawing", function (ctx) {
    var dataURL = ctx.canvas.toDataURL();
    document.getElementById('canvasImg').src = dataURL;
});

怎么可能运行? ctx 未在任何地方定义。在 Vis.js' documentation 中,afterDrawing 事件有这样的描述:

Name Properties Description
afterDrawing canvas context Fired after drawing on the canvas has been completed. Can be used to draw on top of the network.

ctx 是 canvas 上下文的缩写。因此,当方法 on() 完成时,它将 return canvas 上下文,以便函数可以启动。这是一个叫回调函数的概念。