如果我有一个像这样的函数
<cfscript>
function say(what) {
var a = what;
variables.b = what;
return what;
}
</cfscript>
我认为 a 的范围是variables
,但倾销variables
仅返回b
。 a的范围是什么?
这确实是一条评论,但它太长了。考虑下面的代码
<cfscript>
function doMath() {
var a = 1;
local.b = 2;
return a + local.b;
}
</cfscript>
乍一看可能会认为var
and local.
具有相同的范围。毕竟它们都只存在于函数中。当 then 函数完成时,两个变量都不再存在。故事结局?也许不会。
在 ColdFusion 中,我们既有隐式作用域,也有隐式作用域。
url.a
form.a
cookie.a
session.a
application.a
local.a
arguments.a
myQuery.a
都是不同的。如果我将以上所有内容作为有效变量并且我说<cfoutput>#a#</cfoutput>
which a
我明白吗? ColdFusion 会遍历其隐含范围列表,直到找到匹配的范围。这就是显示的内容。那么回到问题上来。
所以当我在一个函数内部时,如果我使用var
我对 ColdFusion 说,查看所有隐含的范围,直到找到匹配的范围。如果我使用local.a
,我是说只查看一个地方并使用它。
Benefits
我确切地知道我正在选取什么变量。如果您正在编写需要尽可能快的代码,则不会使用隐式作用域。如果您正在编写最具可读性的代码,则不会使用隐式作用域。
So no. var
不等于local.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)