Вы можете использовать и тестировать неинициализированные переменные хотя бы на предмет их "определенности".
Как это:
var iAmNotDefined;
alert(!iAmNotDefined); //true
//or
alert(!!iAmNotDefined); //false
Кроме того, есть много возможностей: если вы не заинтересованы в точных типах, используйте оператор '==' (или! [Variable] / !! [variable]) для сравнения (это то, что Дуглас Крокфорд называет «правдивым»). или «фальшивые», я думаю). В этом случае присвоение true или 1 или '1' унитарной переменной всегда возвращает true при запросе. В противном случае [если вам нужно сравнение с безопасностью типов] используйте для сравнения '==='.
var thisMayBeTrue;
thisMayBeTrue = 1;
alert(thisMayBeTrue == true); //=> true
alert(!!thisMayBeTrue); //=> true
alert(thisMayBeTrue === true); //=> false
thisMayBeTrue = '1';
alert(thisMayBeTrue == true); //=> true
alert(!!thisMayBeTrue); //=> true
alert(thisMayBeTrue === true); //=> false
// so, in this case, using == or !! '1' is implicitly
// converted to 1 and 1 is implicitly converted to true)
thisMayBeTrue = true;
alert(thisMayBeTrue == true); //=> true
alert(!!thisMayBeTrue); //=> true
alert(thisMayBeTrue === true); //=> true
thisMayBeTrue = 'true';
alert(thisMayBeTrue == true); //=> false
alert(!!thisMayBeTrue); //=> true
alert(thisMayBeTrue === true); //=> false
// so, here's no implicit conversion of the string 'true'
// it's also a demonstration of the fact that the
// ! or !! operator tests the 'definedness' of a variable.
PS: вы не можете проверить «определенность» для несуществующих переменных. Итак:
alert(!!HelloWorld);
дает ссылку Ошибка («HelloWorld не определен»)
(есть ли более подходящее слово для «определенности»? Прошу прощения за моего голландца; ~)