1 and 2 are the same
3 you are localizing 2 variables var1 and var2
4 you are passing and argument var1 (it really should read arg1) and localizing a variable var2
-essentially you are giving the routine some information to work with
HTH
Tim, you probably already know this , but for anyone who does not,
The arguments (sometimes called parameters in the function definition) also become local variables (local symbols) to the function.
So, you can do this:
(contrived ridiculous example)
Command: (defun foo ( a / ) (setq a (+ 5 a)) (princ (itoa a)))
FOO
Command: (foo 12)
17"17"
Meaning, if you need to process an argument in some way, then do multiple things with the modified value, you need not define a local symbol to hold the modified value, because the argument is itself a local symbol.