当在cffunction标签之后调用时,这两个代码块之间有什么区别:
<cfparam name="bork_bork_bork" default="false">
<cfargument name="bork_bork_bork" required="false" default="false">
答案 0 :(得分:12)
<cfparam>
与默认属性一起使用时,将确保存在变量。由于未指定范围,因此bork_bork_bork
范围内会放入Variables
。
<cfargument>
用于将参数传递给函数。这些值存储在Arguments
范围内。您可以使用arguments.bork_bork_bork
访问该值。
请注意,arguments.bork_bork_bork
和bork_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}
访问cfargumentcfparam只会确保变量在请求中可用,不应该使用cfargument。如需进一步阅读,请查看: