in javascript we used to have a magic object arguments and it had some special properties, some not so well known. arguments.caller [mdn] is fairly well known, as a way to see who is invoking you. even less well known is arguments.callee [mdn] which is just a reference you can use to... yourself.
function whatIGot() {
return `I got ${arguments.callee.turnTables} ` +
`and a ${arguments.callee.sm58}.`
}
whatIGot.turnTables = 2
whatIGot.microphone = 'sm58'
whatIGot() //=> I got 2 turntables and a sm58
It's abstract but this feels like another version of this , another bit of context the programming language provides the runtime, the platform.
It's gone now. arguments got replaced with variadic arguments and destructuring etc, as "the" way to read your arguments. But callee is gone. We are severed from that part of knowing ourselves in this runtime, one very pertinent content & context carrier that lost, a standard means of self access unavailable.
You can make references to yourself and pass those through, but it imo is not the same. Especially not as gracefully at the scale where you start pondering too new whatIGot, hinting at ways the callee isn't so stable as the first reference.
Would love to have you back someday callee, you excellent tool of self reference.