“标识符[...]已经被宣布(......)”。如何在Chrome Devtools控制台中取消设置类变量?

时间:2016-12-08 01:09:20

标签: google-chrome google-chrome-devtools

在Chrome控制台中:

# One
class A {
    constructor(x) { this.x = x }
}

class A {
    constructor(x, y) { this.x = x; this.y = y }
}

VM602:1 Uncaught SyntaxError: Identifier 'A' has already been declared(…)


# Two
class A {
    constructor(x) { this.x = x }
}
delete A
true
class A {
    constructor(x) { this.x = x }
}
VM805:1 Uncaught SyntaxError: Identifier 'A' has already been declared(…)


# Three
A = null
null
class A {
    constructor(x) { this.x = x }
}
VM817:1 Uncaught SyntaxError: Identifier 'A' has already been declared(…)

没有页面重新加载就没有机会取消设置变量。有没有办法在没有页面重新加载的情况下删除/清除/取消设置?

3 个答案:

答案 0 :(得分:2)

我也在寻找这个问题。但是在网上找不到一些有用的东西。

使用下一个workarround:声明与class同名的变量。像这样:

var A = class A { constructor(x) { this.x = x } }

new A(2)
> A {x: 2}

这种方式很容易重新设计:

var A = class A { constructor(x, y) { this.x = x; this.y = y } }
new A(2,3)
> A {x: 2, y: 3}

即使我们使用另一个变量,我们仍然会得到类型为'A'的对象

var AZ = class A {  constructor(x, y) { this.x = x; this.y = y } }
new AZ(2,3)
> A {x: 2, y: 3}

但我们不能使用类名,只能使用变量:

var C = class B {    constructor(x, y) { this.x = x; this.y = y } }
new C(2,3)
> B {x: 2, y: 3}
new B(2,3)
> VM342:1 Uncaught ReferenceError: B is not defined

答案 1 :(得分:1)

我遇到了同样的问题,该错误是关于Typescript类名的抱怨。 错误-刷新页面时,“页面中已经定义了标识符classTest”。

根据Alex的建议,我将变量分配给了具有相同类名的类,从而解决了该问题。

  

var classTest =类classTest {

var classTest = class classTest {
   function addNumber(x: number, y: number){
       return x + y;
   }
}

var obj = new classTest();

$("body").one("loaded", () => {
   //Use obj to call the Class function
}

答案 2 :(得分:1)

将某些内容写入/粘贴到控制台中,然后按Enter键以查看会发生什么,然后使用向上箭头返回到粘贴的内容并进行一些更改,然后按Enter键重新运行它,这很有趣。 如果关键字'var'可以正常工作,但是如果使用'let'则不能。 效果很好:

var myNum = Math.floor(Math.random()* 110);

undefined

myNum
80 //use the arrow key to go up and change the number and it runs every time

这会引发错误:

let num = Math.floor(Math.random()* 5);

VM838:1 Uncaught SyntaxError: Identifier 'num' has already been declared
    at <anonymous>:1:1 // If you use the arrow key to go up and change it.//

第一次还可以,但是使用箭头键并向上进行编辑,然后重新运行,这是我得到的错误。与const相同。 我尝试了“清除控制台” 和“清除控制台历史记录”,但是它们不起作用。 因此,我猜想在控制台中玩游戏时,我会将自己限制为关键字var