Почему функция writedump не требует точки с запятой в cfscript? - PullRequest
3 голосов
/ 07 июля 2011

Обычно все операторы, записанные в тэге CFSCRIPT, должны заканчиваться точкой с запятой (;), но сегодня я работал с примером кода, где я забыл написать точку с запятой (;) после функции writedump (), но все же код выполняется нормально.Ниже приведен пример кода, и это нормально работает;в конце заявления.Просто любопытно узнать, почему writeDump работает без точки с запятой.

Я работаю с Coldfusion версии 9,0,1,274733.

<cfscript>
a = "Hello";
b = "World";
concat(a,b);
writeDump(a & b)
writeOutput(a);
</cfscript>


<cffunction name="concat" access="public" output="false" returntype="string">
<cfargument name="str1" required="true" type="string" />
<cfargument name="str2" required="true" type="string" />
<cfreturn str1 & str2>
</cffunction> 

1 Ответ

4 голосов
/ 07 июля 2011

Полагаю, разработчики Adobe могли забыть применить это довольно бесполезное соглашение к синтаксическому анализатору CFScript ... Потому что на самом деле это похоже на ошибку (это уже подано , кстати). Вы даже можете написать что-то вроде этого, и это будет работать:

writeDump(variables)writeDump(a & b) 

Вид неявной точки с запятой для этой функции.

Стоит отметить, что Railo пошел дальше и сделал необязательными все точки с запятой, когда в строке присутствует одно утверждение, так что это будет прекрасно работать:

<cfscript>
    a = "Hello"
    b = "World"
    concat(a,b)
    writeDump(a & b)
    writeOutput(a)
</cfscript>
...