var 和变量的范围

2024-02-05

如果我有一个像这样的函数

<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(使用前将#替换为@)

var 和变量的范围 的相关文章

随机推荐