gpt4 book ai didi

javascript - 变量 x 曾经是真的吗?

转载 作者:搜寻专家 更新时间:2023-11-01 04:44:38 24 4
gpt4 key购买 nike

在 Javascript 中,有没有一种好方法可以检查变量在整个 session 中是否曾经为真(或任何值)?我现在能想到的最好方法是像这样执行定期检查,将真实性记录在另一个变量中:

if (variable){
variablewasevertrue = true;
}

然后,当我想知道原始 variable 是否曾经为真时,我会检查新的 variablewasevertrue 是否为 true未定义。没有什么比 if (variable was ever true){ 更优雅的了?这看起来不太像 Javascript-y。

最佳答案

不,语言中没有if (variable was ever true) 功能。变量存储值,而不是历史。

在赋值时拦截值并进行检查是唯一的方法。如果变量确实是一个属性(例如,全局变量是全局对象的属性),您可以使用 setters 轻松拦截更改。 .

所以要有一个保存全局变量的历史,你可以这样做

var hasEverBeenTruthy = false;
(function () {
var value;
Object.defineProperty(window, "myGlobal", {
"get": function () { return value; },
"set": function (newval) {
if (newval) { hasEverBeenTruthy = true; }
value = newval;
}
});
})();

这将适用于现代浏览器,并且在许多旧浏览器上有 __defineSetter__ 变体。

关于javascript - 变量 x 曾经是真的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7031728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com