javascript - 在 DOM 对象上设置属性时如何避免无参数重新分配

标签 javascript dom eslint

我有一个主要目的是在 DOM 对象上设置属性的方法

function (el) {
  el.expando = {};
}

我使用 AirBnB 的代码风格,这使得 ESLint 抛出一个 no-param-reassign 错误:

error Assignment to function parameter 'el' no-param-reassign

如何在符合 AirBnB 代码风格的同时操作作为参数传递的 DOM 对象?

有人建议使用 /* eslint react/prop-types: 0 */ 引用 another issue但如果我没记错的话,这适用于 React,但不适用于原生 DOM 操作。

我也不认为改变代码风格是一个答案。我相信使用标准风格的好处之一是在项目之间拥有一致的代码,随意更改规则感觉就像滥用了像 AirBnB 这样的主要代码风格。

作为记录,我在 GitHub 上询问了 AirBnB,他们认为在这些情况下该怎么做 in issue #766 .

最佳答案

正如@Mathletics 建议的那样,您可以 disable the rule完全通过将其添加到您的 .eslintrc.json 文件中:

"rules": {
  "no-param-reassign": 0
}

或者您可以禁用专门针对参数属性的规则:

"rules": {
  "no-param-reassign": [2, { "props": false }]
}

或者,您可以禁用该功能的规则:

/* eslint-disable no-param-reassign */
function (el) {
  el.expando = {};
}
/* eslint-enable no-param-reassign */

或仅针对特定行:

function (el) {
  el.expando = {}; // eslint-disable-line no-param-reassign
}

关于javascript - 在 DOM 对象上设置属性时如何避免无参数重新分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35637770/

相关文章:

javascript - 如何使用 JavaScript 检查 Session 是否过期

javascript - 使用 previousSibling 和 nextSibling 设置属性

Javascript 交换三段

javascript - 关于将 javascript 事件与 innerHTML DOM 元素绑定(bind)的问题

typescript - 如何在 typescript 中导入fs?

java - 从字符串中删除除字母和数字以外的任何内容

javascript - 如何让 Chrome 在新窗口中将 Base64 编码图像另存为 png?

javascript - YAMLException : Error: duplicated mapping key at line 45, 列 30 : "beforeLineComment": false,

reactjs - 第 0 行 : Parsing error: Cannot read property 'map' of undefined

javascript - 使用 VeeValidate,我如何查看某个字段是否已被触摸并且是否有效?