Нет, на языке нет возможности if (variable was ever true)
.Переменные хранят значения, а не историю.
Перехват значений при их назначении и проверка - единственный способ сделать это.Если переменная действительно является свойством (например, глобальная переменная является свойством глобального объекта), вы можете легко перехватывать изменения, используя setters .
Поэтому, чтобы иметь историю, хранящую глобальную переменную, вы моглиdo
var hasEverBeenTruthy = false;
(function () {
var value;
Object.defineProperty(window, "myGlobal", {
"get": function () { return value; },
"set": function (newval) {
if (newval) { hasEverBeenTruthy = true; }
value = newval;
}
});
})();
Это будет работать в современных браузерах, и во многих старых браузерах есть варианты __defineSetter__
.