首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ColdFusion中,UDF是否有从父函数作用域引用变量的方法?

在ColdFusion中,UDF是否有从父函数作用域引用变量的方法?
EN

Stack Overflow用户
提问于 2017-01-19 19:18:53
回答 2查看 201关注 0票数 1

如果您有一个UDF在其中调用另一个UDF的情况,那么是否可以引用父程序的本地作用域而不将其作为参数传递?我的直觉告诉我,这是不可能的,因为函数的局部范围是,假定是由设计隔离的。

例如:

代码语言:javascript
复制
<cffunction name="function01">

     <cfset var fruit = "apple" />

     <cfset function02() />

</cffunction>

<cffunction name="function02">

     <cfdump var="#fruit#" /> <!--- can I reference fruit? --->

</cffunction>

我知道如何让function02访问父UDF的本地作用域变量的唯一方法是将它作为参数传递。当然,您也可以使用请求、表单、URL、会话和应用程序作用域。

代码语言:javascript
复制
<cffunction name="function01">

     <cfset var fruit = "apple" />

     <cfset function02(fruit) />

</cffunction>

<cffunction name="function02">

     <cfargument name="fruit" />

     <cfdump var="#fruit#" />

</cffunction>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-20 18:58:50

根据每个人的注释,正确的答案是您不能从子函数引用局部变量。传递引用的唯一方法是将变量作为参数传递给子函数,或者将变量存储在不同的作用域(例如变量、表单、URL、请求、会话、应用程序、服务器等)。

首选的方法是将变量作为参数传递给子函数:

代码语言:javascript
复制
<cffunction name="function01">

     <cfset var fruit = "apple" />

     <cfset function02(fruit) />

</cffunction>

<cffunction name="function02">

     <cfargument name="fruit" />

     <cfdump var="#fruit#" />

</cffunction>
票数 0
EN

Stack Overflow用户

发布于 2017-01-20 16:31:55

通过在fruit前面声明var,它只对本地作用域可用(在函数中)。

尝试:

代码语言:javascript
复制
<cffunction name="function01">

     <cfset fruit = "apple" />

     <cfset function02() />

</cffunction>

<cffunction name="function02">

     <cfdump var="#fruit#" /> <!--- can I reference fruit? --->

</cffunction>

这可能有效,但这不是处理这个问题的“干净”方法,最好用参数来处理

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41749954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档