Javascript:预期结果。反应:“意外使用了'name'no-restricted-globals”

时间:2019-08-07 20:47:13

标签: reactjs keyword

我首先要说的是,我几乎不了解我开始使用npx create-react-app的项目和我开始使用touch app.js touch app.html的项目之间的区别。

我有以下代码:

var departments = {
  id0: "Networking",
  id1: "Video",
  id2: "Desktop PCs",
}

departments.list = function () {
  var output = "";
  for (name in departments) {
    if (typeof departments[name] == 'string') {
      output=output+departments[name].valueOf()+", ";
    }
  }
  return(output);
}

当我使用上述touch方法创建一个“哑” javascript应用程序时,调用departments.list()会返回Networking, Video, Desktop PCs,,这与我期望的一样。但是,将此确切的代码粘贴到npx create-react-app创建的App.js文件的未封闭部分中,会在包含单词Unexpected use of 'name' no-restricted-globals的每一行上产生编译器错误name

我的印象是,任何JavaScript表达式在React中都是有效的,因为React严格是Javascript的超集?为什么会这样?我错了吗?

我也认识到我正在使用许多我不了解的系统,但是我什至对它们的理解还不够深入,无法开始研究它们。 Npx,npm,webpack,nodejs及其与Javascript和React的关系对我来说都是神秘的。

1 个答案:

答案 0 :(得分:3)

customElements.define('test-el', class TestEl extends HTMLDivElement {}, { extends: 'div' }) let supportsCBI = document.createElement('div', {is: 'test-el'}).constructor.name === 'TestEl' console.log(supportsCBI)变量之前,您需要let关键字。

name

在JavaScript中为未声明的变量赋值时,它将操纵全局范围。如果您使用的是严格模式,则尝试分配给未声明的变量将引发错误。

此处有更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode/Transitioning_to_strict_mode#New_runtime_errors