определить переменную, если она не определена с использованием Javascript - PullRequest
2 голосов
/ 29 марта 2012

Как определить переменную в Javascript, если она не определена. Я попробовал:

var str = "answer";
if(eval(str) == undefined)
   eval("var " + str + " = {}");
alert(answer);

но отображается ошибка: ReferenceError: ответ не определен

Ответы [ 4 ]

7 голосов
/ 29 марта 2012

Если вам нужно сделать это по имени, которое находится в переменной javascript (которое не известно заранее), то вы можете сделать это так:

var str = "answer";
if (typeof window[str] == "undefined") {
    window[str] = {};
}

При этом используется тот факт, что все глобальные переменные являются свойствами объекта окна (в браузере).


Если вы заранее знаете имя переменной, то вы можете просто сделать это:

var answer = answer || {};
1 голос
/ 29 марта 2012

if (typeof answer == "undefined") var answer = {};

Eval выполняется в отдельном контексте.

0 голосов
/ 29 марта 2012

Вы должны использовать typeof с оператором === и 'undefined' (чтобы быть уверенным, что никто не перезаписал неопределенную переменную), чтобы проверить, является ли переменная неопределенной и когда ей затем присваивают значение:

if (typeof answer === 'undefined') {
    var answer = 'Foo bar';
}
0 голосов
/ 29 марта 2012
if(someUndefinedVariable === undefined){
    var someUndefinedVariable = 'whatever you want' 
}
alert(someUndefinedVariable) //obviously not undefined anymore

РЕДАКТИРОВАТЬ: код ниже не работает

или если вы не знаете имя переменной во время написания кода

var propertyName = 'answer'; //could be generated during runtime
if(window[propertyName] === undefined){
    var window[propertyName] = 'whatever you want';
}
alert(window[propertyName]);

...