Yes. ditto for args passed to a cfscript-based udf. ======================================================================= Raymond Camden, ColdFusion Jedi Master for Mindseye, Inc
Email : [EMAIL PROTECTED] WWW : www.camdenfamily.com/morpheus Yahoo IM : morpheus "My ally is the Force, and a powerful ally it is." - Yoda > -----Original Message----- > From: Adrocknaphobia Jones [mailto:[EMAIL PROTECTED]] > Sent: Friday, January 24, 2003 2:25 PM > To: CF-Talk > Subject: RE: Protecting scope of <cffunction> variables > > > By default are <cfarguments ...> protected from outside intervention? > > Adam Wayne Lehman > Web Systems Developer > Johns Hopkins Bloomberg School of Public Health > Distance Education Division > > > -----Original Message----- > From: Sean A Corfield [mailto:[EMAIL PROTECTED]] > Sent: Friday, January 24, 2003 2:07 PM > To: CF-Talk > Subject: Re: Protecting scope of <cffunction> variables > > On Friday, Jan 24, 2003, at 06:56 US/Pacific, Jon Gunnip wrote: > > I am writing UDF's on MX using <cffunction>, and I would > like to know > > what > > the best way to create local variables for use inside my functions > > that will > > not interfere with variables in the caller's scope. > > As others have said - use "var". One practice that many > people seem to > like (and about which I'm still on the fence) is to declare a "local" > struct and use that throughout: > > > <cffunction name="add_two_numbers"> > > <cfargument name="first" required="true"> > > <cfargument name="second" required="true"> > <cfset var local = structNew()> > > <cfset local.sum=arguments.first + arguments.second> > > <cfreturn local.sum> > > </cffunction> > > This has the nice side effect that you only need one "var" > declaration > at the top of your function and all subsequent local.xxx > references are > safe from "outside influence". > > It has the downside that you end up doing a struct dereference for > every local variable. > > Note that if you had your original code inside a CFC, the unadorned > "sum" variable would become a private (OK, 'protected') instance > variable inside the component instance and not accessible > from outside. > See below: > > > <!--- page that uses the function ---> > > <cfinclude template="functions.cfm"> > > Becomes: > <cfset adder = createObject("component","adder")> > > > <!--- using sum to track addition of numbers ---> > > <cfset sum=12> > > > > <!--- sum is now 12 ---> > > <cfset result=add_two_numbers(1, 2)> > > Becomes: > <cfset result = adder.add_two_numbers(1, 2)> > > > <!--- sum is now 3 (changed in function), when I want it to > be 12 ---> > > No longer true - unadorned "sum" is protected inside CFC. > > > <cfset sum=sum + result> > > <!--- sum is now 6, when I want it to be 15 ---> > > sum would be 15. > > Sean A Corfield -- Director, Architecture > Web Technology Group -- Macromedia, Inc. > tel: (415) 252-2287 -- cell: (415) 717-8473 > aim/iChat: seancorfield -- http://www.macromedia.com > An Architect's View -- http://www.macromedia.com/go/arch_blog > > ColdFusion MX and JRun 4 now available for Mac OS X! http://www.macromedia.com/go/cfmxosx ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| Archives: http://www.houseoffusion.com/cf_lists/index.cfm?forumid=4 Subscription: http://www.houseoffusion.com/cf_lists/index.cfm?method=subscribe&forumid=4 FAQ: http://www.thenetprofits.co.uk/coldfusion/faq Structure your ColdFusion code with Fusebox. Get the official book at http://www.fusionauthority.com/bkinfo.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4

