2015-11-01 18 views
6

Cerco sempre di utilizzare la parola chiave var quando all'interno delle funzioni si utilizza CF, ma una domanda probabilmente stupida che ho è, quanto spesso devi usarla?la parola chiave var in coldfusion e quante volte l'uso

Esempio:

<cfset var local = ""> <!-- set at the top of the function --> 

<!-- then later in the function --> 
<cfset var local.firstname = "steve"> 
<cfset var local.lastname = "smith"> 
<cfset var local.email = "[email protected]"> 

si tratta di un caso di ogni volta che si scrive una variabile è necessario impostare la parola chiave, o solo la prima istanza di esso quando viene utilizzato all'interno di una funzione?

o è solo la stessa di

<cfset var local = ""> <!-- set at the top of the function --> 

<!-- then later in the function --> 
<cfset local.firstname = "steve"> 
<cfset local.lastname = "smith"> 
<cfset local.email = "[email protected]"> 

risposta

3

Non è necessario utilizzare la parola chiave 'var' per le variabili che si trovano nel campo di applicazione 'locale'. Poiché "locale" è una struttura, tutti i suoi membri fanno parte dello stesso ambito.

In sostanza, la struttura "locale" è solo un contenitore per contenere tutte le variabili che devono trovarsi nell'ambito locale della funzione.

UPDATE: COME di CF9 local è un ambito esplicito che si utilizza per tenere la vostra funzione ambito variabili, senza dichiararlo. Di solito lo scrivo in maiuscolo ma è una questione di gusti.

<cfset LOCAL.firstname = "steve"> 
<cfset LOCAL.lastname = "smith"> 
<cfset LOCAL.email = "[email protected]"> 

in ColdFusion 8 e prima si sarebbe tipicamente definire una struct local in cima alla vostra funzione:

<cfset var LOCAL = structNew() /> 

Tuttavia si può scegliere qualsiasi altro nome per quella struct.

+1

Ho il sospetto che stanno guardando vecchio codice che ha utilizzato 'var locale = ...' al posto di un ambito locale formale (introdotto nel CF9 +) . * Quindi il secondo dei tuoi esempi va bene. * In realtà il secondo esempio non è valido in CF11. LOCAL è un ambito formale (cioè struttura). Il tentativo di sovrascrivere quella struttura di sistema con una stringa vuota causerebbe un errore. – Leigh

5

Quale versione di ColdFusion stai usando? Poiché ColdFusion 9 local è un ambito, quindi non ha senso crearlo.

Per rispondere alla tua domanda: tutte le variabili locali della funzione devono essere attivamente rese locali alla funzione. ColdFusion non lo fa automaticamente.

Ci sono due modi per farlo. Via la parola chiave var:

var someVar = someValue; 

o attraverso il campo di applicazione local:

local.someVar = someValue; 

siete confusi nei vostri esempi di ciò che una variabile è. Dato questo codice:

var myStruct = {}; 
myStruct.someKey = "some value"; 

In questo examply myStruct è la variabile. myStruct.someKey non è una variabile discreta, è semplicemente una sottochiave della variabile myStruct. Quindi questo non ha senso:

var myStruct = {}; 
var myStruct.someKey = "some value"; 
0

Se non si utilizza l'ambito locale, è sufficiente utilizzare la parola chiave var una volta per ogni variabile.

Sono stato introdotto in Funzioni definite dall'utente con la versione 7.1.Non sono sicuro delle altre versioni, ma in questo caso, è necessario var tutte le variabili subito dopo i tag cfargument, prima che fossero eseguiti altri comandi. In altre parole, questo era ok.

<cffunction etc> 
<cfargument name = "arg1"> 
<cfset var x = 0> 
<cfquery> 
sql goes here 
</cfquery> 
<cfset x = 3> 

ma questo avrebbe gettato un errore:

<cffunction etc> 
<cfargument name = "arg1"> 

<cfquery> 
sql goes here 
</cfquery> 
<cfset var x = 3> 
Problemi correlati