2012-06-26 3 views
4

내가 좋아하는 뭔가를 함수를 사용하여 변수를 만들 수 있도록하고 싶습니다 :Javascript 함수를 사용하여 변수 이름을 지정하는 방법은 무엇입니까?

function createVar(a,b){ 
    var [a]name[b]; 
} 

을 그래서 내가 prefixnamesuffix라는 변수와 끝까지하려는 기능 createVar(prefix,suffix)를 호출하는 경우.

+0

당신은 항상 만들 수 있습니다, 왜 당신이 기능을 원하는? –

+0

왜 변수 이름이 필요한 변수가 필요합니까? 일반적으로 노출 된 객체에서 얻을 수있는 해시 스타일 액세스를 사용하는 것이 훨씬 쉽습니다. – Gareth

+0

겉으로보기에는 기본적인 질문을하는 것에 대해 미안하지 마십시오. 묻고 싶으면 다른 사람들도 관심을 가질 것입니다. 당신이 부실하게 질문하거나 질문에 문제를 설명하기위한 노력의 흔적이 보이지 않는 경우에만 눈살을 찌푸리게됩니다. 그렇게 자기 비하하는 춤을하지 말고 즉시 질문하십시오. – k0pernikus

답변

4

그런 식으로 로컬 변수를 만들 수는 없지만 문자열로 속성을 만들 수 있습니다.

function createVar(obj, a, b) 
{ 
    obj[a+'name'+b] = foo; 
} 
+0

머리로 나를 때려. 나는'window' 객체에 속성을 추가하여 전역 변수를 만들 수 있다고 덧붙이고 싶습니다 :'window [a + 'name'+ b] – jackwanders

+0

절대적으로 완벽합니다! 내 스크립트가 지금 작동 중입니다. 믿을 수 없을 정도로 빠른 도움을 주신 여러분 께 감사드립니다. – BiscuitBaker

+1

해결책이 효과가 있다면, 다니엘은 자신의 대답을 받아 주셔서 감사 할 것이라고 확신합니다. – jackwanders

1
function createVar(a, b, value) { 
    // declare the variable on current context(default is window), 
    // and set value, default is undefined 
    this[a + 'name' + b] = value; 
} 

용도로서 :

createVar('a', 'b'); 
// variable anameb now is declare, but it's value is undefined 
console.log(anameb); // -> undefined 

createVar('prefix', 'suffix', 'optional'); 
// variable prefixnamesuffix now is exist in window 
console.log(prefixnamesuffix); // -> 'optional' 
또는

:

var obj = {}; 
createVar.call(obj, 'pre', 'suf', 'defValue'); 
// variable prenamesuf is now exist in obj, but not exist in window 
console.log(obj.prenamesuf); // -> 'defValue' 
console.log(prenamesuf); // ReferenceError: prenamesuf is not defined 
0

이 가능하다 - 정렬이 까다로울 때문이다.

이 모든 것은 변수의 범위를 이해함으로써 시작됩니다. 의는 기본, 간단한 예를 살펴 보자 :

var myvar = 'I see'; 

이 당신이이 경우 경고에 "내가 볼"것이다 alert(myvar);와 같은 액세스 할 수 있습니다 myvar라는 기본적인 수준에서 가변적이고을 만듭니다.

이것은 실제로 창 개체에 속성을 만듭니다. 따라서 var myvar = 'I see';window['myvar'] = 'I see';과 동일합니다.

복잡한 개체도이 방식으로 만들 수 있습니다.

좀 더 예 : 이것에

window['fred'] = 'howdy fred';// create fred property 
var regularfred = 'howdy fred'; // create regularfred property 
window['town'] = {}; // create town object 
window['town']['george'] = 'georgetown'; //create town.george property 
alert(fred + ":" + regularfred); // alerts "howdy fred:howdy fred" 
alert(fred == regularfred);// alerts true 
alert(this['town']['george']);// alerts "georgetown" 

function createvar(a, b) { 
    this[a + 'name' + b] = "fredling"; 
    alert(this[a + 'name' + b]);// alerts "fredling" 
    alert(window[a + 'name' + b]);// alerts "fredling" 
} 
var hi = 'hi'; 
var lo = 'loook'; 
createvar(hi, lo); 
alert(this[hi + 'name' + lo]);// alerts "fredling" 

Requisit 작업 예 : 온 -가 - 비행 JS에 변수를 http://jsfiddle.net/pGWZN/

+0

이 답변은 중복 답변이지만 창 개체 속성의 세부 사항을 자세히 설명합니다. –

관련 문제