Javascript 重置Chrome开发工具控制台的方法';语境
Chrome>DevTools>console中是否有任何功能可以清除/重置/删除通过它进行测试时声明的变量和函数(就像调用clear一样,清除日志) 比如说,我用Let keyoword声明了一个变量Javascript 重置Chrome开发工具控制台的方法';语境,javascript,ecmascript-6,google-chrome-devtools,Javascript,Ecmascript 6,Google Chrome Devtools,Chrome>DevTools>console中是否有任何功能可以清除/重置/删除通过它进行测试时声明的变量和函数(就像调用clear一样,清除日志) 比如说,我用Let keyoword声明了一个变量 let str = "Hello"; ..我通过控制台运行了一次,然后再次通过控制台运行相同的代码 是的,它会像预期的那样抛出一个错误“标识符'str'已经声明”,因为变量已经声明,不能再次声明(不像用var关键字声明),所以要通过控制台重新运行代码,我必须刷新重置帧/目标上下文的页面 还有其
let str = "Hello";
..我通过控制台运行了一次,然后再次通过控制台运行相同的代码
是的,它会像预期的那样抛出一个错误“标识符'str'已经声明”,因为变量已经声明,不能再次声明(不像用var关键字声明),所以要通过控制台重新运行代码,我必须刷新重置帧/目标上下文的页面
还有其他选择吗
在开发人员控制台中声明任何变量或函数时所影响的是global
执行上下文,对于web浏览器,它是窗口
使用console.clear()
清除控制台内可见的历史记录,但不删除任何变量定义
如果不想逐个手动清除所有变量,可以将它们存储到
对象
和null
对象中,而不是像这样存储到单个变量中:
示例:
let data={};
data.str=“生命、宇宙和万物的答案”;
data.int=42;
log(data.str,data.int);
设置超时(()=>{
console.clear();
数据=空;
log(data.str,data.int);
}, 2000);代码>正如注释中已经提到的,代码是在全局范围内计算的,因此除了重新加载当前窗口外,无法取消将使用let
等声明为全局变量的变量声明
评估
let str = "Hello";
连续将始终触发标识符“str”已声明的错误
一种解决方法是将代码作为完整的块范围代码段进行评估:
{
let str = "Hello";
console.log(str);
}
请注意,块没有返回值(它们是语句而不是表达式),但块中的最后一个表达式由console处理,因此可以省略console.log
{ let str = "Hello"; str }
将在控制台中输出Hello
或者,IIFE可用于返回值:
(() => {
let str = "Hello";
return str;
})()
根据经验,尽量避免在控制台中使用块作用域声明来避免此问题。此代码段可以连续无问题地进行计算:
var str = "Hello"; // instead of `let str = "Hello"`
var Foo = class Foo {} // instead of `class Foo {}`
基本上你有两个选择:
简单的方法是:在控制台中执行window.location.reload()
李>
您可以使用或模式
block scope
和IIFE
将要做的是不会像您那样在全局范围内声明变量。相反,它将在该范围内声明这些变量也,与let
不同,
允许您重新声明它。这非常简单:
打开浏览器窗口
打开开发工具(F12)
分离开发工具
指定一个变量(全局变量),如
要清除变量:只需在控制台中键入:location.reload(true)代码>
如果愿意,请重新指定相同的变量
自2012年11月6日起添加了一个console.clear()
函数。可能重复的变量不能重新声明或取消声明,并且控制台代码在全局范围内运行。重置的唯一方法是window.location.reload()
@jeetaz,然后将其放入块范围内,以便const
和让变量保持本地。@jeetaz因为delete x
和delete object
而连续工作。这是真的。我喜欢有回报的生活。将其标记为答案。但如果您认为是另一种方式,例如,不允许重写使用let关键字声明的全局作用域函数,并通过控制台连续执行此操作,这就是通常通过控制台对其进行测试的方式。重写使用let关键字声明的全局作用域函数-通常您不希望故意使用let
创建全局函数,这正是因为它与var
不同的方式(不能重新声明,在窗口中未定义)。这可能是ES6中唯一可以接受var
的情况。这清理了控制台的全局范围,但实际上必须从控制台运行,而不是进入代码段
(() => {
let str = "Hello";
return str;
})()
var str = "Hello"; // instead of `let str = "Hello"`
var Foo = class Foo {} // instead of `class Foo {}`
let options = {
title: "Menu",
width: 100,
height: 200
};
let options = {
title: "Menu",
width: 100,
height: 200
};