A few issues here. One url, form, variables, arguments, request, application, server, and error should me considered variables available at all times.
<cfset test = structKeyExists(form, "blah")><!--- form should be considered defined --->
Then a slightly more complicated issue. Coldfusion is friendly and automatically searches the scopes for variables (it goes in the order of variables, arguments, url, form and none of the other scopes are searched). While I consider it bad practice to not scope variables, coldfusion considers it valid. Here is an example of how this works
A few issues here. One url, form, variables, arguments, request, application, server, and error should me considered variables available at all times.
<cfset test = structKeyExists(form, "blah")><!--- form should be considered defined --->
Then a slightly more complicated issue. Coldfusion is friendly and automatically searches the scopes for variables (it goes in the order of variables, arguments, url, form and none of the other scopes are searched). While I consider it bad practice to not scope variables, coldfusion considers it valid. Here is an example of how this works