use*_*540 2 coldfusion scope coldfusion-10
根据CF文档:
ARGUMENT范围优先于VARIABLE范围
我试过这段代码.
<cfset fun(25)>
<cffunction name="fun">
<cfargument name="roll" >
<cfset roll = 60>
<cfdump var="#roll#">
</cffunction>
Run Code Online (Sandbox Code Playgroud)
我希望输出是25,但它60.我无法理解为什么ARGUMENT范围不优先于VARIABLE范围?或者我错过了什么?
您刚刚更新arguments.roll到60.如果您想要一个不会被同名参数覆盖的本地函数变量,请将其分配给local范围:
<cfset local.roll = 60>
<cfdump var="#roll#"> // 25, as arguments scope takes precedence
<cfdump var="#local.roll#"> // 60
<cfdump var="#arguments#"> // 25
Run Code Online (Sandbox Code Playgroud)
它正在完成您期望它做的事情(并根据您链接到的文档).
您没有对您的roll变量进行限定<cfset>,因此参数范围优先于变量范围.就像你想要的那样.
IE浏览器:它是解决无范围参照roll是arguments.roll,没有variables.roll.