2014-11-20 3 views
0

면책 조항 : 정확한 용어를 사용하고 있는지 확실하지 않습니다. 이 코드를 감안할 때"부모 범위"에 액세스

는 :

var sample = 'Text'; 
var test = function(sample) { 
    console.log(sample); 
}; 
test('Text Too'); 

그 함수 매개 변수가 다른 이름을 가지고 있으면 console.log() 부를 것이다 출력 "텍스트"알고 있습니다. 함수 파라미터의 이름을 변경하지 않고 "상위 범위"변수 sample을 참조하는 함수 test() 방법이 있는가? 그렇다면 어떻게?

+1

마지막 줄이 답입니다. 그 밖에 무엇을 원하십니까? –

+0

함수 매개 변수의 이름을 변경하지 않고도 가능한지 알고 싶습니다. – Sonny

+0

당신은 할 수 있지만 그게'window' 개체 또는 다른 개체를 포함합니다. –

답변

2

아니, 자바 스크립트에서이 작업을 수행 할 수있는 방법이 없습니다. 내부 범위에서 동일한 변수 이름을 사용하면 외부 범위 변수가 해당 내부 범위에서 완전히 액세스 할 수 없게됩니다.

편집 : 물론 외부 범위가 전역 범위 인 경우는 제외됩니다. 그런 다음 window.sample을 사용할 수 있습니다.

+2

무엇 this.sample 사용에 대한? –

+1

'this'는 완전히 벗어난 것처럼 보입니다. 이 질문을 이해할 때, 객체 속성 및 함수 호출 컨텍스트가 아닌 가변 가시성 및 범위를 처리합니다. – hon2a

+1

는 더 정확하게하려면 : 예,'this.sample' 실제로 제공된 코드에서 일 것입니다,하지만 전역 범위에있는 것으로 간주하고 함수를 호출의 기본 컨텍스트는'window'입니다 때문이다. 그래서 "글로벌 범위에서, 당신은'window.sample'을 사용할 수 있습니다. – hon2a

2

@plbsam 잘, 그는 그의 대답을 삭제해서는 안된다.

특정 경우

, 함수 내부 this는이 호출되는 상황은 다음과 같습니다 docs

var sample = 'Global var'; 
var test = function(sample) { 
    console.log("sample: "+sample); 
    console.log("this.sample: "+this.sample); 
}; 
test('Local var'); 

편집 :이 모든으로

는 함수가 호출되는 범위에 따라 달라집니다 당신은 항상 어디서나 액세스 할 수 있도록 전역에서 별도의 VAR에 this을 할당 할 수 있습니다

,988,