2014-10-02 4 views
0

Я хочу строку преобразовать в переменную:JQuery: строка преобразовать переменную

var abc='b'; 
var b=5; 
console.log(window[abc]); 

в JS, выше нормально. при использовании jquery:

$(document).ready(function(){ 
    var abc='b'; 
    var b=5; 
    console.log(window[abc]); 
}); 

show is undefined, поэтому, как я могу написать? Во втором примере получить 5 через глобальный объект.

ответ

0

Это все о областях.

var b = 5; 

существует только в рамках своей функции() {...}, но вы пытаетесь искать его в рамки окна.

попробуйте вместо этого:

console.log(eval(abc)) 

или назначьте б как ключ к какой-то временный объект:

$(document).ready(function(){ 
    var scope = {}; 
    scope.abc = 'b'; 
    scope.b = 5; 
    console.log(scope[scope.abc]) 
}); 

UPDATE

В случае, если вы хотите использовать локальную область видимости, просто замените «объем» на «это»:

$(document).ready(function(){ 
    this.abc = 'b'; 
    this.b = 5; 
    console.log(this[this.abc]) 
}); 
+0

в готовой функции, что может представлять сферу? temp-объект необходим? есть ли другой метод? –

+0

«это» - это область для каждой функции. Вы можете использовать его, просто замените «scope» на «this» в моем ответе – jevgenig

+0

Но вы должны знать, что каждая функция может быть применена к какой-либо существующей области, а $ .ready применяет вашу функцию к чему-то существующему. Поэтому, если вы хотите, чтобы ваши вары были удалены от других областей, temp var лучше – jevgenig

0

var abc определен в функции. Таким образом, это «локальная» переменная, которая не находится в объекте window. Просто используйте console.log(abc), и все будет хорошо. В вашем первом примере также будет работать console.log(abc).

+1

Лучше проверить, что вывод 'console.log (window [abc])' в первом примере равен;) – Andreas

+0

Во-вторых, хотите получить 5 через глобальный объект ~ –

0

Для быстрого примера:

$(document).ready(function(){ 
    var abc = 'b'; 
    this.b = 5; 

    console.log(this[abc]); 
}); 
+0

это работа ~ спасибо! –

+0

Добро пожаловать в любое время;)) –

Смежные вопросы