我对cfargument
有疑问。如果我在调用.cfc
时发送参数,那么将它定义为参数是否有任何好处?
<cffunction name="someFunction" ....>
<cfargument name="myArg" required="no">
或者我可以在函数内部使用IsDefined()而无需定义参数吗?
<cffunction name="someFunction" ....>
...
<cfif isDefined("arguments.myArg")>
do something
</cfif>
我试过它们并且知道它们都有效。但是,定义参数和使用isDefined()之间有什么区别?这会影响效率吗?
答案 0 :(得分:8)
这不是关于效率,而是关于文档。这是我公司在cfargument
上编码标准文件的例外情况。
在ColdFusion函数中使用CFARGUMENT标记时,需要以下属性:
ColdFusion不要求您使用cfargument
标记,但它们提供验证(类型安全)并充当其他文档,因此始终为您的函数所期望的每个命名参数提供cfargument
标记。 p>
规则:
type
属性。尽量避免使用type="any"
。required="true"
,但不要指定default
属性值。required="false"
并指定default
属性值。default
,而是在函数体中使用structKeyExists(arguments,"ARGNAME")
(请记住,当您指定default
时,你不能区分省略该参数的调用者和提供与参数相同的默认值的调用者之间的区别。foo
,参考arguments.foo
。)HTH