Skip to main content
Ben Nadel
On User Experience (UX) Design, JavaScript, ColdFusion, Node.js, Life, and Love.

Creating A VARIABLES-Scoped Function Of The Same Name

By Ben Nadel on
Tags: ColdFusion

I have 5 minute before my lunch break is over and I just wanted to try this (not very exciting at all). What happens when you have a VARIABLES-scoped user defined ColdFusion function that has the same name as a built in ColdFusion function. The test:

<!---
	Create a very simple UDF that simply echoes
	back the first argument that it is passed.
--->
<cffunction name="Echo">
	<cfreturn ARGUMENTS[ 1 ] />
</cffunction>


<!--- Assign this UDF to the "Find" key within variables. --->
<cfset VARIABLES.Find = VARIABLES.Echo />

<!--- Now, try to call this both with and without a scope. --->
#VARIABLES.Find(
	"Naughty",
	"Naughty robot!"
	)#

#Find(
	"Naughty",
	"Naughty robot!"
	)#

Running the above code, we get the output:

Naughty
1

Calling the UDF with the original VARIABLES scope calls our UDF. Calling it without the scope invokes the built-in ColdFusion method. Interesting.

Ok, what about if we do the same thing as above, but this time, we do NOT use the VARIABLES scope at all:

<!---
	Set the Echo method directly into the non-scoped
	Find variable.
--->
<cfset Find = VARIABLES.Echo />

<!--- Now, try to call this both with and without a scope. --->
#VARIABLES.Find(
	"Naughty",
	"Naughty robot!"
	)#

#Find(
	"Naughty",
	"Naughty robot!"
	)#

Running the above, we get the output:

Naughty
1

Exactly the same effect whether or not we use the VARIABLES scope. Kind of interesting. Nothing really important here. The only strange thing is that if you do this:

<cfdump var="#GetMetaData( Find )#" />

It gives you the UDF meta data and NOT the built in ColdFusion method meta data.

Ok, back to work :)


Reader Comments