현재 모든 함수와 구성 요소에서 범위가 지정되지 않은 변수를 확인하고 있습니다. 모든 기능을 확인하기 위해 varscoper4 라는 도구를 사용하고 있습니다. 다음 코드가 주어지면 varscoper는 범위가 지정되지 않은 4 행의 변수 "input"을 알려줍니다. 이것이 사실이며 변경하는 경우 인수 변수의 범위를 지정해야합니까?
<cfoutput>#testit(1)#</cfoutput>
<cffunction name="testit">
<cfargument name="input">
<Cfset input = 3>
<cfreturn input>
</cffunction>
참고로 varscoper4 함수의 인수 변수 입력을 변경하지 않으면 범위가 지정되지 않은 변수가보고되지 않습니다.
<cfoutput>#testit(1)#</cfoutput>
<cffunction name="testit">
<cfargument name="input">
<Cfset var output = 3 + input>
<cfreturn output>
</cffunction>
첫 번째 코드 블록에서 입력은 "범위가 지정되지 않음"이지만 CF는이를 인수 범위로 해석합니다. CF는 항상 우선 순위를 살펴봄으로써 범위가 지정되지 않은 변수를 찾으려고합니다. 여기에서 자세한 정보를 찾을 수 있습니다 : http://www.learncfinaweek.com/week1/Scopes/
다른 범위를 덤프하고 출력을 확인하여 어떻게 보이는지 직접 볼 수도 있습니다.
<cfoutput>#testit(1)#</cfoutput>
<cffunction name="testit">
<cfargument name="input">
<cfset input = 3>
<cfdump var="#variables#" label="variables">
<cfdump var="#arguments#" label="arguments">
<cfdump var="#local#" label="local">
<cfreturn input>
</cffunction>
변수 범위를 명시 적으로 지정해야하는 위치에 대한 가이드로 varscoper 도구의 출력을 사용하는 것이 좋습니다. 이 경우 첫 번째 코드 블록은 다음과 같습니다. 이것은 코드의 명확성과 확실성을위한 것입니다.
<cfoutput>#testit(1)#</cfoutput>
<cffunction name="testit">
<cfargument name="input">
<cfset arguments.input = 3>
<cfdump var="#variables#" label="variables">
<cfdump var="#arguments#" label="arguments">
<cfdump var="#local#" label="local">
<cfreturn arguments.input>
</cffunction>
개인적으로 함수와 메서드에서 인수를 설정하거나 변경하는 것을 좋아하지 않습니다. 차라리 두 번째 코드 블록에서와 같이 그것들을 완전하게 유지하고 싶습니다. 그러나 거기에서도 varscoper에 의해 플래그가 지정되지 않았더라도 인수의 출처를 알 수 있도록 명시 적으로 인수 범위를 지정합니다.
<cfoutput>#testit(1)#</cfoutput>
<cffunction name="testit">
<cfargument name="input">
<cfset var output = 3 + arguments.input>
<cfdump var="#variables#" label="variables">
<cfdump var="#arguments#" label="arguments">
<cfdump var="#local#" label="local">
<cfreturn output>
</cffunction>
명확하지 않은 경우 여기에 추가 할 마지막 사항은 var 범위 지정이 모든 것을 로컬 범위에 넣는다는 것입니다. 이 작업을 수행 할 수도 있으며 이전 코드 블록과 기능적으로 동일합니다.
<cfoutput>#testit(1)#</cfoutput>
<cffunction name="testit">
<cfargument name="input">
<cfset local.output = 3 + arguments.input>
<cfdump var="#variables#" label="variables">
<cfdump var="#arguments#" label="arguments">
<cfdump var="#local#" label="local">
<cfreturn local.output>
</cffunction>
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다