2010-01-27 7 views
2

작동 예 :JS에서 이름으로 로컬 변수를 가져 오는 방법은 무엇입니까? 글로벌 VAR와

 
var example_var = 'global var example'; 

var x = function(){ 
    var var_name = 'example_var'; 
    alert('Global var value is: ' + window[var_name]); 
} 

이 어떻게 지역 변수와 같은 일을 할 수 있습니까? 이 (작동하지 않는 예)처럼 :

 
var x = function(){ 
    var example_var = 'Local var example'; 
    var var_name = 'example_var'; 
    alert('Local var value is: ' + window[var_name]); 
} 
+0

중복 : http://stackoverflow.com/questions/39960/javascript-locals –

+0

왜 로컬 범위 객체는 당신의 최선의 선택이 될 수 있는가? 이것은 일반적으로 어려운 방법으로 변수를 처리하는 신호입니다. – Anonymous

+0

문제의 깨끗한 예입니다. 사실,이 코드는 개체 자체에 이름이 들어있는 다른 메서드로 개체를 확장하는 데 사용됩니다. – klesh

답변

2

당신은 eval을 사용하지 않으을;

var x = function(){ 
    var self = {}; 
    self.example_var = 'Local var example'; 

    var var_name = 'example_var'; 

    alert('Local var value is: ' + self[var_name]); 
} 
+0

이것은 좋은 해결 방법이지만 문제에 엄격하게 답변하지는 않습니다. – tokland

-2

가능 :

var x = function(){ 
    var example_var = 'Local var example'; 
    var var_name = example_var; 
    alert('Local var value is: ' + var_name); 
} 

나 :

var x = function(){ 
     var example_var = 'Local var example'; 
     window.var_name = example_var; 
     alert('Local var value is: ' + window[var_name]); 
    } 

또는

var x = function(){ 
      var var_name = 'Local var example';  
      alert('Local var value is: ' + var_name); 
     } 
+0

질문에 액세스하려고합니다. 이름으로 변수. 예제 : 1) var_name 값은 example_var 값이 아닌 "example_var"입니다. 2) 여전히 var_name은 값이 아니라 varible의 이름을 포함합니다. 3) 액세스하려는 다른 변수가 없습니다. –

5

당신은 다른 방법이없는 경우, 당신이 할 수있는 시도해보십시오 eval

var x = function(){ 
    var example_var = 'Local var example'; 
    var var_name = 'example_var'; 
    alert('Local var value is: ' + eval(var_name)); 
} 
-3

이 문제에 대한 해결책은 두 가지가 있습니다.
1. 평가는(),하지만 난 정말 우리가 여기에 VAR에서 변수 선언을 변경할 수 있습니다
2. 악()를 사용하고 싶지 않아요 :

 
var x = function(){ 
    this.example_var = 'this.var example'; 
    this.var_name = 'example_var'; 
    alert('Local variable value is: ' + this[var_name]); 
} 
+1

종종 'this'는'window'와 동일하므로 전역을 제거 할 수 있습니다. – Anonymous

관련 문제