【问题标题】:Puzzled error... an identifier is already declared in DevTools令人困惑的错误...在 DevTools 中已经声明了一个标识符
【发布时间】: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


【解决方案1】:

正如 cmets 中提到的那样,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);
}

将您的代码放在 iife 中

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-05
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    • 2021-04-23
    • 2011-07-24
    • 2019-10-10
    • 2015-09-28
    相关资源
    最近更新 更多