Я пытаюсь запустить весенний динамический веб-проект на моей локальной машине Tomcat. Добавление & ldquo; allowPublicKeyRetrieval = false & rdquo; не работает

В отличие от PHP, JavaScript не предоставляет доступ к массиву globals (который содержит ссылки на все объявленные имена переменных). Таким образом, JavaScript не предлагает встроенную поддержку переменных переменных. Вы можете, однако, эмулировать эту функцию, пока вы определяете все свои переменные как часть массива или объекта. Это, в свою очередь, создаст для вас массив злодеев. Например, вместо объявления переменной hello в глобальной области видимости следующим образом:

var hello = 'hello world';

давайте инкапсулируем ее внутри объекта. Мы будем называть этот объект vv (переменными переменными):

var vv = {
    'hello': 'hello world',
    //Other variable variables come here.
},
referToHello = 'hello';

Теперь мы можем ссылаться на переменную по ее индексу, и поскольку индексы массива могут быть предоставлены с использованием переменной, мы фактически используем переменная переменная:

console.log(vv[referToHello]); //Output: hello world

Ответ на ваш вопрос

Давайте применим это к коду, указанному в исходном вопросе:

    var vv = {
        'x': 'variable',
        'variable': 'hello world!'
    };
    console.log(vv[vv['x']]); //Displays "hello, world!"

A Практическое использование

Хотя предыдущий код может показаться смехотворно громоздким и непрактичным, существуют практические применения переменных переменных в JavaScript с использованием такого типа инкапсуляции. В приведенном ниже примере мы используем ту же концепцию, чтобы получить идентификатор неопределенного количества элементов HTML.

var elementIds = [],
        elements = ['message','fillOrStroke','sizePicker','colorPicker']; //The items in this array could be defined automatically via an input, database query, event, etc.
        elements.forEach( (element) => {
            elementIds[element] = document.getElementById(element);
        });

В этом примере объявляются переменные переменные (ключи в elementIds) на основе идентификатора каждого элемента , и назначит узел упомянутого элемента как значение каждой переменной. И поскольку использование глобальных переменных в JavaScript, как правило, не рекомендуется, если переменные переменные являются уникальной областью (в этом случае, объявив их внутри массива elementIds) не только аккуратно, но и более ответственным.

0
задан Dev Anand 5 March 2019 в 02:29
поделиться