从JS中的内存中清除数据

时间:2019-06-29 18:31:44

标签: javascript memory

鉴于我正在处理某种敏感数据,例如解密的秘密,我想在不再需要它时立即将其处理,在JS中是否有有效的方法?

例如,会这样

let secret = null;

secret = getSecretSomehow();
useSecretSomehow(secret);

secret = null; // clear secret

发挥作用,即secret那时将停止存在于内存中,如果在执行该行后转储了设备内存,或者没有任何JS运行时,将无法获得它警告,这会使它失效?

为澄清问题,使问题更精确-假设我们不将该数据放入DOM或其​​他任何内容,它仅作为变量存在。

1 个答案:

答案 0 :(得分:0)

删除更具语义,但是它取决于您是否要保留定义的变量或将其完全删除。

window.x = "Test";
console.log(window.x);
// "Test"

delete window.x;
console.log(window.x);
// undefined

使用删除,x不再是窗口对象的属性。上面的示例使变量为空。在我的示例上下文中,如果您将x属性设为空,则该属性仍将存在于window对象上。出于安全考虑,这些评论似乎最有帮助。

我希望对您有所帮助!