我正在使用一个例子来学习JS中的装饰器。当我将下面的示例代码作为Chrome DevTools中的代码段运行时,我收到错误信息:
未捕获的SyntaxError:已声明标识符'wrapped' at:1:1
但是,当我使用Node.js在终端中运行相同的代码时,一切都很好。将变量名从const wrapped = loggingDecorator(doSomething);
更改为const hello = loggingDecorator(doSomething);
告诉我这不是问题b / c错误只是变成了:
未捕获的SyntaxError:已声明标识符'hello' at: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);
答案 0 :(得分:0)
正如评论wrapped
中所提到的那样,您可能已在您正在检查的页面或任何扩展程序中声明。我建议你使用以下方法之一。
{
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);
}
或
将您的代码置于生活中
(function(){
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);
})();