在coldfusion函数中cfparam和cfargument之间的区别?

时间:2012-01-23 21:49:38

标签: coldfusion coldfusion-9 cffunction

当在cffunction标签之后调用时,这两个代码块之间有什么区别:

<cfparam name="bork_bork_bork" default="false">

<cfargument name="bork_bork_bork" required="false" default="false">

4 个答案:

答案 0 :(得分:12)

<cfparam>与默认属性一起使用时,将确保存在变量。由于未指定范围,因此bork_bork_bork范围内会放入Variables

<cfargument>用于将参数传递给函数。这些值存储在Arguments范围内。您可以使用arguments.bork_bork_bork访问该值。

请注意,arguments.bork_bork_borkbork_bork_bork不一样。 arguments的范围仅在函数内,另一个存储在Variables范围内,并且在页面的任何位置都有效(尽管我不建议以这种方式编码。)

答案 1 :(得分:2)

cfparam与函数无关。鉴于param / argument在大多数语言中都是可互换的单词,我可以看出这是令人困惑的。请记住,在版本5之前,用户定义的函数未添加到CF,因此使用cfparam作为初始化变量的方法没有冲突。此外,cfparam标签可能从现在过时的函数ParameterExists()中取出它的名字(反之亦然 - 当我进入CF版本4.0(1999)时,该函数已被弃用,所以我错过了背后的历史它)

答案 2 :(得分:1)

cfparam是一种在变量尚不存在的情况下为任何变量设置默认值的方法。这是执行以下操作的捷径:

<cfif NOT isDefined('bork_bork_bork')>
    <cfset bork_bork_bork = 'myDefaultSetting'>
</cfif>

cfargument只能在开始标记之后用于定义传递给CFC函数或用户定义函数的参数。

根据我的记忆,cffunction标记和cfargument标记之间不存在任何内容,因此它们必须紧跟在cffunction标记之后。

答案 3 :(得分:0)

在函数中,您将通过参数scope {arguments.bork_bork_bork}或通过数组{arguments 1}

访问cfargument

cfparam只会确保变量在请求中可用,不应该使用cfargument。如需进一步阅读,请查看:

cfargument

Using the Arguments scope as an array

Defining functions by using the cffunction tag