At a place where a command is expected, the char # serves as comment. That can be the beginning of a line or immediately after a semicolon (;). A line or bracketed [expression] beginning with # is treated as nothing.
It differs from the construct if 0 ... in that its following arguments cannot be processed.
If you write this:
if 0 [puts a]
then the output is a, followed by the prompt:
a %
If you write this:
# [puts a]
then nothing happens:
%