Snap! provides it as an argument when calling JS Functions, because in OOP style, the JS procedure needs some starting point to access the data structures of the script, the sprite, the world, whatever.
So it's always the final input to the JS Function. However many inputs the CALL block provides, the JS code gets one more. If it doesn't pay attention to that extra argument, nothing bad happens, but it's there if you need it.