which of these is more efficient in ColdFusion?
Description:-
isDefined( )
:- Evaluates a string value to determine whether the named variable exists.
structKeyExists( )
:- Determines whether a specific key is present in a structure.
isDefined()
workflow:-
This function works like this when we pass a variable name/key in this function it searches this key/name in the below scope table order accordingly.
Sequence | Scope Name |
1 | Local (function-local, UDFs, and CFCs only) |
2 | Arguments |
3 | Thread local (inside threads only) |
4 | Query (not a true scope; variables in query loops) |
5 | Thread |
6 | Variables |
7 | CGI |
8 | Cffile |
9 | URL |
10 | Form |
11 | Cookie |
12 | Client |
even if we pass the scope name with a variable name/key like this isDefined( "variables.test" )
this will also check in the top scope table order accordingly, and if the variable variables.test
key/name is declared in argumentes.test
then it will be found in arguments.test
variable before variables.test
variable.
structKeyExist( )
workflow:-
This function works like this when we pass a variable name/key in this function & also we need to pass the structure/scope in this function as per its arguments method, it only searches this key/name in the specific scope/structure which was passed when it called like structKeyExist( "form", "test" )
or form.keyExist( "test" )
. so it will search for fewer scopes.
conclusion:-
by using this structKeyExist( )
function in place of this isDefined( )
the function is far more faster/optimized, it is not only giving some performance but our code is also more readable & maintainable.