스크립트 변수가 함수에 전달되지 않을 때 함수는 어떻게 스크립트 변수에 액세스할 수 있습니까?스크립트 변수를 사용하는 입력 매개변수가 없는 함수가 있습니다.
다른 프로그래밍 언어에 대한 내 이해에 따르면 함수는 함수에 전달되거나 함수에서 정의된 변수에만 액세스할 수 있어야 합니다.
아래 스크립트를 실행하면 14가 반환됩니다. 이것이 작동하는 이유는 무엇입니까? 함수에서 사용하는 변수를 더 배타적으로 만드는 방법이 있습니까?
scriptVar = 14;
myFunction = function({},{default local},
functionVar = scriptVar;
return(functionVar);
);
returnVar = myFunction();당신의 도움을 주셔서 감사합니다.
고급 통계 모델링자동화 및 스크립팅데이터 접근실험 설계품질 및 프로세스 엔지니어링Re: 스크립트 변수가 함수에 전달되지 않은 경우 함수는 어떻게 스크립트 변수에 액세스할 수 있습니까?아, 이제 명확해졌습니다.내가 얼마나 자주 ~하지 않다 여기(1)에 기본 이름 사용...
Re: 스크립트 변수가 함수에 전달되지 않은 경우 함수는 어떻게 스크립트 변수에 액세스할 수 있습니까?제 실수를 잡아주셔서 감사합니다. 그 말을 하려고 했어 변수는 기본적으로 전역입니다 .
Here 이름 공간을 호출했을 때 변경되었습니다. 유효한 전역 이름 공간을 설명하기 위해 스크립트를 수정했습니다.
// Names Default To Here( 1 );
Delete Symbols();
fn1 = Function( {x},
fn2 = Function( {x},
2*x;
);
5*fn2(x);
);
Show Symbols();
y = fn1(10);
Show( y );
Show Symbols();
로그에는 다음이 표시됩니다.
// Global
fn1 = Function( {x},
fn2 = Function( {x}, 2 * x );
5 * fn2( x );
);
// 1 Global
y = 100;
// Global
fn1 = Function( {x},
fn2 = Function( {x}, 2 * x );
5 * fn2( x );
);
fn2 = Function( {x}, 2 * x );
y = 100;
// 3 Global
따라서 fn2는 기본적으로 전역 변수이기도 합니다. 필요한 경우 지역 변수인 예외를 선호함을 나타내야 합니다.
Re: 스크립트 변수가 함수에 전달되지 않은 경우 함수는 어떻게 스크립트 변수에 액세스할 수 있습니까?함수에서 변수의 범위를 제어하기 위해 {default local} 선언을 사용합니다.그러나 함수 외부의 변수는 전역 범위를 갖습니다. 이것이 'scriptvar'가 함수에 표시되는 이유입니다.이러한 동작을 방지하기 위해 'names default to here(1)' 선언을 사용합니다.
Re: 스크립트 변수가 함수에 전달되지 않은 경우 함수는 어떻게 스크립트 변수에 액세스할 수 있습니까?Kelly의 질문을 이해한다면 목표는 원하는 동작이 아니라 실수로 전역 변수를 사용하는 것을 피하는 것입니다.
함수가 기본적으로 전역적이라는 것은 무엇을 의미합니까?내 이해는 함수가 포함하는 네임스페이스가 존재하는 동안만 지속된다는 것입니다. 따라서 아래 예제에서 fn1은 here 네임스페이스(또는 이름이 없는 경우 전역에서 here(1)로 기본 설정됨)에 저장되지만 fn1이 완료되는 즉시 fn2가 사라집니다. 실행 중이므로 fn1이 실행될 때마다 다시 생성됩니다.
names default to here(1);
delete symbols();
fn1 = function({},
fn2 = function({},
1
);
);
show symbols();
/*
Returns:
// Here
fn1 = Function( {},
fn2 = Function( {}, 1 )
);
// 1 Here<BR />*/
Re: 스크립트 변수가 함수에 전달되지 않은 경우 함수는 어떻게 스크립트 변수에 액세스할 수 있습니까?감사해요!
대안으로 사용할 수 있는 설명과 예제에 감사드립니다.Re: 스크립트 변수가 함수에 전달되지 않은 경우 함수는 어떻게 스크립트 변수에 액세스할 수 있습니까?변수는 기본적으로 전역적이며 스크립트 실행 후에도 지속됩니다.
함수 정의 표현식에 전역 변수를 사용하는 이유는 무엇입니까? 값이 필요한 경우 함수 매개 변수를 사용하고 함수를 호출할 때 인수를 전달합니다.
Re: 스크립트 변수가 함수에 전달되지 않은 경우 함수는 어떻게 스크립트 변수에 액세스할 수 있습니까?함수는 먼저 기호/변수를 해결하기 위해 자체 네임스페이스를 찾은 다음 변수를 찾지 못하면 누락된 값을 반환하기 전에 점진적으로 부모 네임스페이스를 통해 값을 찾습니다.변수가 함수 내에서 생성된 경우 코드의 나머지 부분에서 액세스할 수 없습니다.이것이 일반적인 오류 원인이라는 데 동의합니다.
로컬 함수를 사용하여 로컬 변수로 작업하고 있는지 확인할 수 있습니다.이는 종종 중첩된 for 루프에서 실수로 사용될 수 있는 'i'와 같은 일반적인 반복 변수에 유용합니다. 다음은 예입니다.
scriptVar = 14;
myFunction = function({},{default local},
local({scriptVar},
functionVar = scriptVar;
return(functionVar);
);
);
returnVar = myFunction(); //Returns empty함수에서 지역 변수를 선언하는 것이 일반적인 사용 사례이므로 이 동작은 '함수' 함수에 포함됩니다.
scriptVar = 14;
myFunction = function({}, {scriptVar = .},
functionVar = scriptVar;
return(functionVar);
);
returnVar = myFunction();