如何取消声明通过 JavaScript 控制台添加的所有非函数变量(不刷新)

How to UN-declare all non-function variables added via JavaScript console (without refreshing)

考虑一下 - 假设我去控制台并写道:

let x = 'y';

然后我又写了一遍得到:

let x = 'y';

我会得到:

SyntaxError: redeclaration of let x

当然我无意这样做,只是为了描述我是如何得到错误的。

有时为了测试目的,我多次复制带有变量重新声明的整个代码,这些代码包含已经声明变量的代码(即使我修改了代码的其他部分复制前的文本编辑器)。为了克服这个问题,我应该刷新浏览器。

我可以在控制台中写些什么来不再出现此 "redeclaration" 错误?

我试过这个没有帮助:

localStorage.clear();

换句话说,如何在 JS 控制台中声明变量(不是函数)后取消声明它们?


我问这个的原因是为了方便 --- 在大多数情况下,我更喜欢在不刷新的情况下取消声明所有变量。

测试 CSS 注入 时,这可能会非常舒服,就像在这种情况下一样(这样你就不会得到“myCSS 的重新声明”):

// JS CODE TO UN-DECLARE ALL VARIABLES IN EACH NEW PASTE.

// CODE WITH SAME VARIABLES AND CHANGES:
let myCss =`
    .myclass1 {opacity: 1}
    .myclass2 {display: block}
`;
style = document.createElement("style");
style.type = "text/css";
style.styleSheet ? style.styleSheet.cssText = myCss : style.appendChild(document.createTextNode(myCss) );
head = document.head || document.getElementsByTagName("head")[0];
head.appendChild(style);

我建议使用 IIFE 的:

(function () { 
    let x = 'y'; 
    console.log(x); 
})();

他们不在全局命名空间下创建变量。因此,您可以 运行 IIFE 多次而不刷新页面。

您不能删除使用 var/let/const 直接在控制台中声明的变量。

你有两个选择,要么使用 IIFE (https://en.wikipedia.org/wiki/Immediately-invoked_function_expression)。

这是有效的,因为一切都在功能范围内。

或者不使用var/let/const

x = "y";
delete x;
x = "z";