The arguments variable in JS is always there, but taking a parameter called 'arguments' overrides it in all scopes. It's a pseudo keyword!
Related Posts
I'm coming round to the view that a main function shouldn't take arguments.
For example, in Rust you have to call std::env::args() to get CLI arguments.
This makes Hello World less verbose, and gives you more flexibility in setting up CLI argument parsers.
It's always seemed odd to me that the Rust stdlib is so lean (no random numbers, regex, HTTP) yet clippy is so big (correctness, performance, style preferences, even 'too many arguments').
Maybe it's because cargo is mature but clippy doesn't have an extension ecosystem?
It is remarkably hard to escape command line arguments safely on Windows, and the standard libraries of multiple languages have needed patching: https://flatt.tech/research/posts/batbadbut-you-cant-securely-execute-commands-on-windows/