鉴于我正在处理某种敏感数据,例如解密的秘密,我想在不再需要它时立即将其处理,在JS中是否有有效的方法?
例如,会这样
let secret = null;
secret = getSecretSomehow();
useSecretSomehow(secret);
secret = null; // clear secret
发挥作用,即secret
那时将停止存在于内存中,如果在执行该行后转储了设备内存,或者没有任何JS运行时,将无法获得它警告,这会使它失效?
为澄清问题,使问题更精确-假设我们不将该数据放入DOM或其他任何内容,它仅作为变量存在。
答案 0 :(得分:0)
删除更具语义,但是它取决于您是否要保留定义的变量或将其完全删除。
window.x = "Test";
console.log(window.x);
// "Test"
delete window.x;
console.log(window.x);
// undefined
使用删除,x不再是窗口对象的属性。上面的示例使变量为空。在我的示例上下文中,如果您将x属性设为空,则该属性仍将存在于window对象上。出于安全考虑,这些评论似乎最有帮助。
我希望对您有所帮助!