Мне нужно передать список имен переменных в JavaScript и проверить, существуют ли эти переменные. Я попытался следующие, но это, кажется, не будет делать трюк (JSFiddle here):Как проверить динамические глобальные переменные без использования `window` в JavaScript?
var test1 = 'test1';
var test2 = 'test2';
function checkVariable(variableNameList) {
for (var iterator = 0; iterator < variableNameList.length; iterator++) {
var variableName = variableNameList[iterator];
if (typeof window[variableName] === 'undefined') {
alert('Variable ' + variableName + ' is not defined');
} else {
alert('Variable ' + variableName + ' is defined');
}
}
}
checkVariable(['test1', 'test2', 'test3']);
Я пытаюсь получить результирующие предупреждения:
- переменной test1 определяется.
- Определяется переменная test2.
- Переменная test3 не определена.
Похоже, что это можно исправить, используя трюк ниже, но есть ли другой способ достичь этого? Является ли объявить глобальные переменные под window
единственным способом, чтобы отслеживать их? `
window.test1 = 'test1';
window.test2 = 'test2';
Существуют ли более эффективные способы сделать это, или это правильный подход?
Vanilla JS отвечает только на них.
Почему используется 'window.varname' трюк? Глобальные переменные определяются на объекте окна. –
Что вы пытаетесь сделать точно? – epascarello
@JackZelig Тогда почему это не работает без явного объявления переменной в окно? –