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

时间:2018-03-01 18:51:45

标签: javascript google-chrome-devtools decorator

我正在使用一个例子来学习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);

1 个答案:

答案 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);
})();