Evaluate используется в основном для оценки динамически названных переменных, таких как переменные формы. Если вы не знаете, какие переменные формы могут быть отправлены из формы, вы можете просто пропустить имя поля, обратившись к FORM.fieldnames.
(http://cfprimer.blogspot.com/2005/03/avoid-evaluate.html). В 14 лет с кодированием CF я видел, что он использовался только несколько раз. На мой взгляд, это плохая практика, чтобы настроить себя таким образом, чтобы заранее не знать, какие элементы формы будут представлены.
В вашем примере индекс имеет значение «element». Таким образом, при циклизации все, что содержится в вашем списке «fieldnames», будет элементом.
Если вы хотите, чтобы вывести эти имена полей, вы могли бы сделать что-то вроде этого:
<cfset fieldnames = "firstname,lastname,email">
<cfoutput>
<cfloop index="element" list="#fieldnames#">
#element#<br>
</cfloop>
</cfoutput>
Это будет выводить так:
firstname
lastname
email
Каков контекст кода? Это похоже на очень плохой код, но в определенном контексте это может иметь больше смысла. Например, существует ли «цикл запроса» вокруг этого кода? Во всех вероятных капюшонах код Evaluate (Element) должен быть заменен ссылочной ссылкой, такой как form [element], url [element], комбинация ссылок url / form или queryvarname [element] [queryvarname.currentrow]. –