The type of the function need not to be declared but if a basic type is declared strict type checking is enabled in the body of the function. Uninitialized arguments are set to 0. The difference is, of course, that an assignment to the local variable also changes the associated variable of the calling function. The type of the arguments need not to be declared when strict type checking is disabled. It is illegal to have a function with the same name as a function in the same object, or local variable.
Functions are reentrant.
Local variables have their own namespace and can hide global variables. If there is no return statement, the number 0 will be returned.