困惑的错误......已经在DevTools中声明了一个标识符

问题描述 投票:0回答:1

我正在使用一个例子来学习JS中的装饰器。当我在Chrome DevTools中将以下示例代码作为代码段运行时,我收到错误信息:

未捕获的SyntaxError:标识符'wrapped'已经声明为: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);
javascript google-chrome-devtools decorator
1个回答
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);
})();
© www.soinside.com 2019 - 2024. All rights reserved.