在 cffunction 标记之后立即调用这两个代码块有什么区别:
<cfparam name="bork_bork_bork" default="false">
<cfargument name="bork_bork_bork" required="false" default="false">
在 cffunction 标记之后立即调用这两个代码块有什么区别:
<cfparam name="bork_bork_bork" default="false">
<cfargument name="bork_bork_bork" required="false" default="false">
<cfparam>
,当与默认属性一起使用时,将确保变量存在。因为没有指定范围,bork_bork_bork
所以被放到了Variables
范围内。
<cfargument>
用于将参数传递给函数。这些值存储在Arguments
范围内。您将使用 访问该值arguments.bork_bork_bork
。
注意arguments.bork_bork_bork
和bork_bork_bork
不一样。的范围arguments
仅在函数内,另一个存储在Variables
范围内,并且在页面上的任何位置都有效(尽管我不建议这样编码。)
cfparam 与函数无关。我可以看到这很令人困惑,因为参数/参数在大多数语言中都是可互换的词。请记住,用户定义的函数直到版本 5 才添加到 CF,因此使用 cfparam 作为初始化变量的方法没有冲突。此外,cfparam 标记可能从现在已过时的函数 ParameterExists() 中提取其名称(反之亦然 - 当我进入 CF 时,在 4.0 版(1999 年),该函数已经被弃用,所以我错过了背后的历史它)
如果变量不存在,cfparam 是一种为任何变量设置默认值的方法。这是执行以下操作的快捷方式:
<cfif NOT isDefined('bork_bork_bork')>
<cfset bork_bork_bork = 'myDefaultSetting'>
</cfif>
cfargument 只能在开始标记之后使用,以定义要传递给 CFC 函数或用户定义函数的参数。
据我回忆,cffunction 标签和 cfargument 标签之间不能存在任何东西,所以它们必须出现在 cffunction 标签之后。
在函数中,您将通过参数范围 {arguments.bork_bork_bork} 或数组 {arguments 1 }访问 cfargument
cfparam 将确保变量在请求中可用,不应使用 cfargument 代替。如需进一步阅读,请查看: