【发布时间】:2018-08-09 22:30:02
【问题描述】:
我正在使用一个例子来学习 JS 中的装饰器。当我在 Chrome DevTools 中将下面的示例代码作为 sn-p 运行时,我收到了错误消息:
未捕获的 SyntaxError:标识符“已包装”已被声明 在:1:1
但是,当我使用 Node.js 在终端中运行相同的代码时,一切都很好。将变量名从 const wrapped = loggingDecorator(doSomething); 更改为 const hello = loggingDecorator(doSomething); 告诉我这不是问题 b/c 错误只是变成了:
未捕获的 SyntaxError:标识符“hello”已被声明 在:1:1
有人知道发生了什么吗?
function doSomething(name) {
console.log('Hello, ' + name);
}
function loggingDecorator(wrapped_func) {
return function() {
console.log('Starting');
const result = wrapped_func.apply(this, arguments);
console.log('Finished');
return result;
}
}
const wrapped = loggingDecorator(doSomething);
【问题讨论】:
-
什么版本的 Chrome?我看不到那个错误,除非我运行 sn-p 两次(这很好:运行
const wrapped两次应该产生错误)。 -
@apsillers ,我的版本是版本 64.0.3282.167。我刚刚创建了另一个 sn-p,第一次运行时遇到了同样的错误。
-
嗯,这和我的很接近(我的结尾是
.186)。您是否正在运行任何可能会干扰的扩展程序(列在chrome://extensions中)?这是我唯一的猜测,它不是一个很好的猜测——我不知道扩展会如何导致这种行为,但这是我能想到的唯一实质性差异。另外,我在 Windows 10 上,物有所值。
标签: javascript google-chrome-devtools decorator