Подтвердить что ты не робот

Динамически получать глобальную переменную по строке имени в JavaScript

<script>
//in one script
var someVarName_10 = 20;
</script>

Я хочу получить доступ к этой переменной из другого script по имени переменной. С объектом window его просто, возможно ли с локальной переменной?

Я имею в виду доступ к этому var с помощью кода следующим образом:

<script>
  alert(all_vars['someVar' + 'Name' + num]);
</script>
4b9b3361

Ответ 1

Вы хотите сделать что-то вроде этого?

<script>
//in one script
var someVarName_10 = 20;

alert(window["someVarName_10"]); //alert 20

</script>

Обновить: потому что OP отредактировал вопрос.

<script>
  num=10;
  alert(window['someVar' + 'Name_' + num]); //alert 20
</script>

Ответ 2

Я заметил, что все сообщают о создании глобального var, что приведет к утечке переменных в глобальное пространство имен. Когда вы динамически создаете классные имена или просто переменные, легко сохранить em local:

this['className'] = 123;

или

this['varName'] = 123;

Расстояние между именами будет выглядеть так:

vars = {};
vars['varName'] = 123;
vars.varName // 123

Ответ 3

<script>
    var someVarName_10 = 20;
    var num = 10;
    alert(eval('someVar' + 'Name_' + num)); //alert 20
</script>

Ответ 4

ну, для цели отладки, вы можете сделать что-то вроде этого. Я использую его во время разработки классов, где некоторые переменные должны оставаться частными (var). эта работа даже в локальной переменной (и глобальном проклятии)

function MYCLASS(){
    var a=1, b=2, c=3;
    this.public = "variable";
    this.debug = function(sVar){
        return eval(sVar);
    }
}

var myThing = new MYCLASS();
myThing.debug('a') //return 1
myThing.debug('b') //return 2
myThing.debug('c') //return 3

Ответ 5

Если это то, что вы сказали:

<script type="text/javascript">
var hello = 'test';
</script>
<script type="text/javascript">
  alert (hello);
</script>

Это работает, потому что script, наконец, доступен для документа, и вы можете получить доступ к своим vars.