var foo = "bar"
var bar = "realvalue";
Можно ли напечатать значение bar
с помощью foo
?
var foo = "bar"
var bar = "realvalue";
Можно ли напечатать значение bar
с помощью foo
?
Подход 1: глобальная переменная
var foo = "bar";
var bar = "realvalue";
alert(window[foo]);
ИЛИ
Подход 2: пространство имен
Разделите js на пространства имен
var namespace = {
foo : "bar",
bar : "realvalue"
};
alert(namespace[namespace.foo]);
Да, вы можете сделать что-то подобное с помощью eval
var foo = "bar";
var bar = "realvalue";
alert(eval(foo));
EDIT: Кажется, многие люди против использования функции eval(). Мой совет перед его использованием прочитал этот вопрос: Почему использование JavaScript eval-функции плохое?
Затем, как только вы поймете риски, которые можете решить сами, если вы хотите использовать их.
Если это глобальная переменная, вы можете использовать window[foo]
Не делайте подобные конструкции с неглобальными переменными, просто используйте любые переменные, которые вы в противном случае могли бы плавать.
var myscope = {
bar: 'realvalue'
},
foo = 'bar';
alert(myscope[foo]);
Btw, вышеизложенное не полагается на поведение браузеров по умолчанию, чтобы также регистрировать глобальные переменные в объекте window
, заставляя его работать с такими вещами, как Node.js.
Глобальные переменные определены в объекте window
, поэтому вы можете использовать:
var bar = "realvalue";
alert(window["bar"]);
var foo = "bar";
var bar = "realvalue";
foo=bar;
console.log(foo);
alert(foo);
var foo = "bar";
var bar = "realvalue";
alert(eval(foo));
Да, через eval
. Но, к сожалению, не без eval
, что есть плохая идея для использования.