gpt4 book ai didi

javascript - 谷歌浏览器片段 : Identifier '...' has already been declared

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:56:40 24 4
gpt4 key购买 nike

我正在使用 Google Chrome 的代码片段(在 Dev Tools 中)进行一些 JS 开发和测试。

当声明 ES6 类时,控制台抛出一个

Uncaught SyntaxError: Identifier 'Foo' has already been declared at...

第一次运行后。

class Foo {
constructor(val) {
this.bar = val;
}
}

var f = new Foo('myVal');
console.log(f.bar); // prints 'myVal'

我做了一些研究,发现用 {} 将代码包装在 block 范围内有助于避免这个问题。

但是当我这样做时,虽然代码运行没有错误,但 Chrome 无法识别我可能对我的代码所做的任何后续编辑。

因此,如果我将上面的代码更改为以下内容:

{
class Foo {
constructor(val) {
this.bar = val;
}
}
}

var f = new Foo('myVal');
console.log(f.bar); // prints 'myVal'

到目前为止一切正常。

现在,我意识到我的类有问题,我将代码更改为以下内容:

{
class Foo {
constructor(val) {
this.bar = 'MyHardcodedVal'; // Here is the changed code
}
}
}

var f = new Foo('myVal');
console.log(f.bar); // STILL prints 'myVal'

如您所见,我对类(class)所做的编辑没有生效。

Google Chrome 浏览器似乎已将我的代码放入沙箱中,不受我的编辑影响。

查看幕后情况并查看 Google Chrome 正在做什么的一种方法是在代码中引入一个故意的错误,然后单击 Chrome 在控制台中显示的错误源。在那里你会看到类的代码仍然是旧的,根本没有改变,而 block 范围之外的代码是最新的。

A few pieces of important information are highlighted: (let) The intentional mistake / ('hardcoded') The change in my class / (VM157) Top and down where you can click to see how the code looks like behind the scenes

Here you can see that behind the scene the edit to the code that was in block scope is not existent

我总是可以关闭我正在使用的选项卡并再次打开它,但这不切实际。

我做错了什么?

有没有一种合理的方法可以使用代码片段进行此类测试?

希望这是有道理的!

最佳答案

根据评论,听起来解决方案是包装整个 snippet在大括号中。

{
class Foo {
constructor(val) {
this.bar = 'MyHardcodedVal'; // Here is the changed code
}
}
var f = new Foo('myVal');
console.log(f.bar); // STILL prints 'myVal'
}

关于javascript - 谷歌浏览器片段 : Identifier '...' has already been declared,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55784025/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com