2016-07-27 3 views
0

JavaScript에서 어떤 식 으로든 반환 함수에서 변수 값에 액세스하는 방법은 무엇입니까? 당신이 아무데도 변수 value 선언되지 않은, 이후반환 함수의 변수

function x(){ 
    return{ 
    foo:function(text){ 
     value= text; 
    } 
    } 
} 
a=x(); 
a.foo("some text"); 
+1

수 없습니다. 당신은 아마 그것을 돌려주고 싶다. 또한 변수를 선언해야합니다. – SLaks

+0

'var value ...'라고 가정하면 클로저이고 다른 함수로 묶인 함수의 내부 변수에 액세스 할 수 없습니다 (객체에 있더라도). – adeneo

답변

3

,이 변수는 (브라우저의 환경에서 윈도우 객체의 속성으로) 전역에 선언됩니다. 그래서 당신은 아래와 같이 접근 할 수 있습니다. 그러나 이것은 입니다. 나쁜 사례입니다. 먼저 변수를 선언하지 않고 변수를 사용하는 것이 좋습니다. 이를 implied global이라고합니다.

function x(){ 
 
    return{ 
 
    foo:function(text){ 
 
     value = text; 
 
    } 
 
    } 
 
} 
 
a=x(); 
 
a.foo("some text"); 
 
document.write(value);

3

내 개인적인 의견은 객체 지향 접근법을 사용하는 것입니다.

var SomeObject = function(){ 
    var text = ""; 
    this.setText = function(value){ 
     text = value; 
    }; 
    this.getText = function(){ 
     return text; 
    }; 
}; 

var myObject = new SomeObject(); 
myObject.setText("This is the text"); 
alert(myObject.getText());