#$2 just ensures that $2 is a channel parameter. You can't normally stick things directly in front of or after identifiers, but there are exceptions. As a rule of thumb, you should try a script before declaring that it doesn't work, because there's so many quirks in the script parser that you could be wrong without realising.

You can attach things to the end of the $N identifiers too: //tokenize 32 a | echo -a $1bc