Creative Juices Bo. Co.

Satisfy Your Thirst For Something Refreshing!

ColdFusion Tips & Tricks: Components

ColdFusion Components and Var Scoping Trick

Var scoping is essential when dealing with ColdFusion Components. You can get weird results or even some hard-to-track errors if you don't do this. I'm not privy as to why this happens, I just know that it does. It's one of those mysteries that I just never bothered to research. All I know, is that sometimes it's a pain in the butt, especially when your writing a fairly complex function and you forgot to var scope an "i" in a cfloop or some other quick and dirty variable you made.

Well a few months back, I started doing something with my function variables, that I thought I would share. Not only does it solve my var problem, but it winds up making the top of my function shorter (I'm a stickler for cleanish looking code). Essentially I create a generic local struct in the begining and I'm sure to var scope it, like so:

<cfset var local = StructNew() />

And then as I begin writing my function, I just ad variables to the struct. So if I need to add a loop counter, I would just declare it like this:

<cfloop index="local.i" from="0" to="10">

   ...my fun loop stuff...

</cfloop>

Need to declare and array? No problem:

<cfset local.my_array = ArrayNew(1) />

This has really been a time saver for me and I no longer worry about var scoping my variables. At first, I didn't realize how easy this made my function writing life, but now it's just an automatic process that I don't even think about. If anyone knows a reason as to why I shouldn't do this, please let me know. But until then I'm not stopping!

Hope you find this useful.