我正在使用Google Chrome浏览器的代码段(在开发工具内部)进行一些JS开发和测试。
声明ES6类时,控制台将抛出一个
未捕获的SyntaxError:标识符'Foo'已在...声明
第一次运行后。
class Foo {
constructor(val) {
this.bar = val;
}
}
var f = new Foo('myVal');
console.log(f.bar); // prints 'myVal'
Run Code Online (Sandbox Code Playgroud)
我进行了一些研究,发现将代码包装在块范围内{}有助于避免此问题。
但是,当我这样做时,尽管代码运行没有错误,但Chrome无法识别我可能会对代码进行的任何后续编辑。
因此,如果我将上面的代码更改为以下代码:
{
class Foo {
constructor(val) {
this.bar = val;
}
}
}
var f = new Foo('myVal');
console.log(f.bar); // prints 'myVal'
Run Code Online (Sandbox Code Playgroud)
到目前为止,一切正常。
现在,我意识到我的课有问题,我将代码更改为以下内容:
{
class Foo {
constructor(val) {
this.bar = 'MyHardcodedVal'; // Here is the changed code
}
}
}
var f = new Foo('myVal');
console.log(f.bar); // STILL …Run Code Online (Sandbox Code Playgroud)