我正在使用一个示例来学习JS中的装饰器。当我在Chrome DevTools中将以下示例代码作为代码段运行时,出现错误消息:
未捕获的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);
正如评论中提到的那样,您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);
})();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句