如何取消声明通过 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";
考虑一下 - 假设我去控制台并写道:
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";