Ben Nadel
On User Experience (UX) Design, JavaScript, ColdFusion, Node.js, Life, and Love.
I am the chief technical officer at InVision App, Inc - a prototyping and collaboration platform for designers, built by designers. I also rock out in JavaScript and ColdFusion 24x7.
Meanwhile on Twitter
Loading latest tweet...
Ben Nadel at cf.Objective() 2013 (Bloomington, MN) with:

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 girl!"
  • )#
  •  
  • #Find(
  • "Naughty",
  • "Naughty girl!"
  • )#

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 girl!"
  • )#
  •  
  • #Find(
  • "Naughty",
  • "Naughty girl!"
  • )#

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

Post A Comment

You — Get Out Of My Dreams, Get Into My Comments
Live in the Now
Oops!
Comment Etiquette: Please do not post spam. Please keep the comments on-topic. Please do not post unrelated questions or large chunks of code. And, above all, please be nice to each other - we're trying to have a good conversation here.