[javascript] JavaScript에서 동적 변수 이름 사용
PHP에서는 다음과 같이 놀랍고 끔찍한 일을 할 수 있습니다.
$a = 1;
$b = 2;
$c = 3;
$name = 'a';
echo $$name;
// prints 1
Javascript로 이와 같은 작업을 수행하는 방법이 있습니까?
예 var name = 'the name of the variable';
를 들어 변수가 name
있다면 이름을 가진 변수에 대한 참조를 얻을 수 있습니까?
답변
ECMA- / 자바 스크립트는 모든 것 ( Objects
및 Contexts
일종의 Object) 에 관한 것이므로 모든 변수는 Variable 이라는 (또는 Function, Activation Object의 경우 )에 저장됩니다.
따라서 다음과 같은 변수를 작성하면
var a = 1,
b = 2,
c = 3;
에서 글로벌 범위 (= NO 기능 컨텍스트), 당신은 암시 적으로이 변수 쓰기 글로벌 객체 (= window
브라우저에서)를.
“dot”또는 “bracket”표기법을 사용하여 액세스 할 수 있습니다.
var name = window.a;
또는
var name = window['a'];
때문 만이 특정 인스턴스에서 전역 객체에 대한 작동 변수 오브젝트 의 글로벌 개체 는 IS window
객체 자체. 함수의 컨텍스트 내에서는 활성화 객체에 직접 액세스 할 수 없습니다 . 예를 들어 :
function foobar() {
this.a = 1;
this.b = 2;
var name = window['a']; // === undefined
alert(name);
name = this['a']; // === 1
alert(name);
}
new foobar();
new
자체 정의 객체 (컨텍스트)의 새 인스턴스를 만듭니다. new
기능의 범위가 없으면 global
(= 창)이됩니다. 이 예는 경고 것 undefined
와 1
각각. 우리가 다음 this.a = 1; this.b = 2
과 같이 교체한다면 :
var a = 1,
b = 2;
두 경고 출력은 모두 정의되지 않습니다. 이 시나리오에서는 변수 a
와는 b
에서 정품 인증 개체에 저장된 얻을 것이다 foobar
우리가하지 액세스 (물론 우리가 호출하여 직접 그 액세스 할 수 할 수있는, a
그리고 b
).
답변
eval
하나의 옵션입니다.
var a = 1;
var name = 'a';
document.write(eval(name)); // 1
답변
window 객체를 사용하여 얻을 수 있습니다.
window['myVar']
window
사용중인 모든 전역 변수 및 전역 함수에 대한 참조가 있습니다.
답변
나쁜 답변이 얼마나 많은 표를 얻는 지 모릅니다. 대답하기는 쉽지만 복잡하게 만듭니다.
// If you want to get article_count
// var article_count = 1000;
var type = 'article';
this[type+'_count'] = 1000; // in a function we use "this";
alert(article_count);
답변
a = 'varname';
str = a+' = '+'123';
eval(str)
alert(varname);
이 시도…
답변
이것은 예입니다 :
for(var i=0; i<=3; i++) {
window['p'+i] = "hello " + i;
}
alert(p0); // hello 0
alert(p1); // hello 1
alert(p2); // hello 2
alert(p3); // hello 3
다른 예시 :
var myVariable = 'coco';
window[myVariable] = 'riko';
alert(coco); // display : riko
따라서 myVariable의 ” coco ” 값 은 변수 coco가 됩니다.
전역 범위의 모든 변수는 Window 개체의 속성이므로
답변
Javascript에서는 모든 속성이 키 값 쌍이라는 사실을 사용할 수 있습니다. jAndy는 이미 이것을 언급했지만 그의 대답이 어떻게 악용 될 수 있는지는 생각하지 않습니다.
일반적으로 변수 이름을 보유 할 변수를 만들지 않고 변수 이름을 생성 한 다음 사용하려고합니다. PHP는 $$var
표기법으로 수행하지만 속성 키는 배열 키와 상호 교환 가능하므로 Javascript는 필요하지 않습니다.
var id = "abc";
var mine = {};
mine[id] = 123;
console.log(mine.abc);
일반적으로 변수를 구성하려고합니다. 간접적 인 이유가 있으므로 다른 방법으로도 할 수 있습니다.
var mine = {};
mine.abc = 123;
console.log(mine["a"+"bc"]);