在 DOM 对象上设置属性时如何避免 no-param-reassign

2024-01-17

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

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

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

错误分配给函数参数“el”no-param-reassign

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

有人建议使用/* eslint react/prop-types: 0 */指的是另一个问题 https://stackoverflow.com/questions/30948970/how-to-disable-eslint-react-prop-types-rule-in-a-fil但如果我没记错的话,这适用于 React,但不适用于本机 DOM 操作。

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

作为记录,我在 GitHub 上询问了 AirBnB,他们认为在这些情况下该怎么做在第 #766 期中 https://github.com/airbnb/javascript/issues/766.


As 本文解释了 https://spin.atomicobject.com/2011/04/10/javascript-don-t-reassign-your-function-arguments/,这个规则是为了避免改变arguments object https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments。如果您分配给一个参数,然后尝试通过arguments对象,它可能会导致意想不到的结果。

您可以使用另一个变量来获取对 DOM 元素的引用,然后对其进行修改,从而保持规则不变并保持 AirBnB 样式:

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

在JS中对象(包括DOM节点)都是通过引用传递的,所以这里el and theElement是对同一个 DOM 节点的引用,但修改theElement不会改变arguments对象自arguments[0]仍然只是对该 DOM 元素的引用。

这种方法在规则的文档 http://eslint.org/docs/rules/no-param-reassign:

此规则的正确代码示例:

/*eslint no-param-reassign: "error"*/

function foo(bar) {
    var baz = bar;
}

就我个人而言,我只会使用"no-param-reassign": ["error", { "props": false }]接近提到的其他几个答案。修改作为参数传递的对象的属性不会更改对象引用,因此不应遇到此规则试图避免的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 DOM 对象上设置属性时如何避免 no-param-reassign 的相关文章

  • Jasmine 条件 callThrough 和 callFake

    我有一个返回函数引用的方法 function methodetobeMoked param case1 return func1 case 2 return func2 case n return funcN 我需要监视这个方法并返回特定输
  • 如何使用 Shopify API 将商品添加到购物车

    我正在使用 Shopify API 开发自定义网络应用程序 这里的想法是使用应用程序作为独家店面 只需向 Shopify API 发出请求 我已在我的 Shopify 帐户中设置了一个私人应用程序来执行此操作 我从 api 提取产品没有问题
  • 使用智能菜单jquery打印json

    menu name Computers children name Notebook children name Apple name Windows name Tablets children name Apple name Androi
  • 如何使用jquery格式化数字

    我正在尝试删除 之后的数字 然后我想格式化数字 16810900 211233 喜欢这个 16 810 900 但我不知道该怎么做 这是我的 html 是这样的 div class main p class active 10200 00
  • 如何使用 Underscore 获取 JavaScript 数组中的重复项

    我有一个数组 我需要重复的项目并根据特定属性打印这些项目 我知道如何使用 underscore js 获取唯一项目 但我需要找到重复项而不是唯一值 var somevalue name john country spain name jan
  • 如何使用 console.log 省略文件/行号

    如今 您可以在 Chrome 的控制台中编写非常好的东西 查看this https developer chrome com devtools docs tips and tricks关联 我也做了一个截图 正如您在屏幕截图中看到的那样 文
  • Chart.js - 如何将数组集合推入数据集

    我一直在尝试多种方法将数组集合推送到数据集中 任何人都可以帮助我根据下面的代码将数组推入堆积图表中 这是例子 Codepen 堆叠栏 https codepen io narendrajadhav pen abzpWam JavaScrip
  • 使用 Javascript 对象模型在 SharePoint 任务上设置“分配给”

    我想创建一个共享点任务并将其分配给我自己 当前用户 在 javascript 对象模型中 我有下面的代码 但我认为我需要设置 spusercollection 对象 而不是设置特定用户 但是 我似乎无法在任何地方找到如何执行此操作的任何示例
  • 从对象获取数据 - 我看到数据但无法保存它们

    正如你所看到的 我是新来的 我确实尝试过搜索 但没有找到解决我问题的方法 所以这是我的问题 如果我这样做 console log grid data kendoGrid data 这在控制台中显示如下 所以我明白这一点 有一个数组和一个带有
  • 我什么时候应该使用内联和外部 Javascript?

    我想知道什么时候应该包含外部脚本或将它们与 html 代码内联编写 就性能和易于维护而言 这方面的一般做法是什么 真实场景 我有几个需要客户端表单验证的 html 页面 为此 我使用了一个包含在所有这些页面上的 jQuery 插件 但问题是
  • Facebook 登录无法在移动浏览器中使用

    我使用 react facebook login 在我的网站中实现了 facebook 登录module https github com keppelen react facebook login 我在 ComponentDidMount
  • 如何更改 Vuetify 日历日期格式

    我正在尝试在以下 Vuetify 日历上启用输入事件 https github com vuetifyjs vuetify blob master packages docs src examples calendars complex e
  • 根据数据更改图例颜色高图表

    我可以根据数据动态设置列的颜色 但无法弄清楚如何更改图例中的颜色 请注意 jsfiddle 最新的条形图是绿色的 但图例是蓝色的 有没有办法改变列颜色也会改变图例颜色 这是我用于列颜色的代码 jsfiddle http jsfiddle n
  • 谷歌浏览器如何启动桌面应用程序?

    我真的不知道术语 所以我将从一个例子开始 如果我点击磁力链接 Google Chrome 会询问我是否要启动 torrent 客户端 我单击 确定 chrome 启动该应用程序 该应用程序根据链接执行一些操作 现在有办法查看应用程序如何从
  • D3 时间解析返回 null

    根据此页面上的说明 https github com mbostock d3 wiki Time Formatting https github com mbostock d3 wiki Time Formatting我正在尝试解析 ISO
  • javascript 中一次仅选中一个复选框

    I have 3复选框 我只想1一次选中的复选框 下面是我的 html 小提琴 JS小提琴 https jsfiddle net n03jLhqa 我想要这个工作在IE8还请建议如何做 这个怎么样 fiddle http jsfiddle
  • 调用不带括号的 javascript 函数

    以下 renderChat 函数用于将消息和图像渲染到聊天板上 该函数内部还有另一个函数 var onComplete function 它完成创建列表元素并将其附加到聊天列表的所有工作 onComplete函数之后就只有这三行代码 img
  • Firefox 和 Chrome 为 offsetTop 提供了不同的值

    我试图相对于输入字段定位一个跨度元素 让我们称之为 工具提示跨度 为此 我将工具提示跨度和输入字段包装在另一个跨度元素中 我们称之为 包装器跨度 该元素具有position relative 然后我设置position absolute在工
  • 自动更改 Twitter Bootstrap 选项卡

    我希望 Twitter Bootstrap 选项卡按时间顺序更改 我使用它们有点像旋转木马 我希望选项卡每 10 秒切换到下一个选项卡 这是一个例子 http library buffalo edu http library buffalo
  • Chrome 中的 addEventListener

    我正在关注 Lynda com 上有关新 DOM 事件模型的教程 这是我正在使用的代码 function addEventHandler oNode sEvt fFunc bCapture if typeof window event un

随机推荐

  • 使用 dask 加载大型数据集

    我处于具有集群 紧密耦合互连和支持 Lustre 文件系统的 HPC 环境中 我们一直在探索如何利用 Dask 不仅提供计算 而且充当分布式缓存来加速我们的工作流程 我们专有的数据格式是 n 维且规则的 并且我们编写了一个惰性读取器以传递到
  • 如何从 DRF 的标题选项中删除“LOCATION”?

    我有一个序列化器 其中包含URL字段 默认情况下 如果有一个字段名为URL然后该字段的值作为 LOCATION 添加到 HEADER 选项中 我不想这样做 并且想删除LOCATION标题中的选项 这是我的序列化器 class DemoSer
  • Rails 根据两个字段查找或创建

    我有一个场地模型 我想这样做 Venue find or create by 但我只想在同名和日期不存在的情况下创建一个新场地 例如 gt Venue id integer location string showdate datetime
  • fill_ Between() 不起作用

    I have this tiny problem with a chart I am working on I d like to fill the area between 2 semi vertical lines as shown b
  • 从 OpenCV + Python 获取 HOG 图像特征?

    我读过这篇关于如何使用 OpenCV 基于 HOG 的行人检测器的文章 如何使用 OpenCV 检测和跟踪人员 https stackoverflow com questions 2188646 how can i detect and t
  • 如何删除前导“0”。在数值 R 变量中

    如何简洁地更改数字 R 变量 保持其数字 以便例如 0 34 变成简单的 34 仅当输出数值时 才必须选择具体的表示形式 即数字的格式 您不能将数值变量从 0 34 更改为 34 两者都是同一数字的表示 但是 当您输出表达式时e 您可以选择
  • 'git reset --soft' 是一个无操作命令吗?

    The 文档 http linux die net man 1 git reset指出利用 soft option 根本不触及索引文件或工作树 但要求它们处于良好的顺序 这使得所有更改的文件 要提交的更改 正如 git status 所说的
  • NoSuchFieldError 实例位于 org.apache.http.impl.io.DefaultHttpRequestWriterFactory

    java version 1 7 0 71 Gradle 2 1 Hello UPDATE 依赖关系 gradle dependencies grep httpcore org apache httpcomponents httpcore
  • 如果应用程序未至少启动一次,广播接收器将无法在 ICS 中工作

    这个问题在堆栈溢出中被问过几次 但还没有解决方案 我有一个广播接收器 用于接收 USB 连接操作 广播接收器的责任是 如果我得到意图启动我的应用程序 在清单文件中 我添加了接收器 我在 GingerBread 中也有同样的逻辑 但 ICS
  • 暂停 UIImageview 动画

    我想暂停UIImageView animation根据我的研究发现 您可以停止图像的动画 但无法暂停序列 通过调用语句stop animating on the UIImageView然后它停止动画并清空图像视图 要暂停 UIImages
  • 片段实例化崩溃

    我的一些用户遇到了崩溃 这是 Google Play 开发者控制台上的崩溃报告中显示的错误 Unable to start activity ComponentInfo com havens1515 autorespond com have
  • 表面网格到体积网格

    我有一个使用 Meshlab 从点云生成的封闭表面网格 我需要为此获得一个体积网格 这样它就不是一个空心物体 我想不通 我需要获取 stl 文件进行打印 谁能帮我获得体积网格 我更喜欢简单的解决方案而不是复杂的算法 给定一个定向的水密表面网
  • GKE Ingress-GCE 是否支持压缩?

    我的后端在 Rocket Rust 中没有内置压缩功能 因此 它依赖于代理来压缩它 虽然 nginx 入口控制器支持它 但我想默认的入口控制器是否也有它 因为它具有高可用性 如果没有的话应该如何设置呢 更新 2018 01 31 它看起来像
  • 如何从 R 中拟合线性 b 样条回归中提取基础系数?

    以下面的一结 一级样条为例 library splines library ISLR age grid seq range Wage age 1 range Wage age 2 fit spline lm wage bs age knot
  • Youtube API v3,topicId 恢复

    Youtube API v3 使开发人员能够检索有关特定视频的特定信息 在返回的数据中 有一个称为topicDetails可以按照以下示例请求 Request https www googleapis com youtube v3 vide
  • Angular 无法使用不同数量的子级重新附加 ActivatedRouteSnapshot

    这是我在 NativeScript Angular 项目中的路由 const routes Routes path redirectTo tabs default pathMatch full path tabs loadChildren
  • 如何获取 AJAX 发送的 JSON 以与 PHP 配合使用

    在我寻求让 PHP 可以使用这个 JSON 的过程中 我遇到了一个又一个的障碍 所以我想知道是否有人可以帮助我 我将 JSON 存储在变量 DivisionsJSON 中 var divisionsJSON JSON stringify d
  • 尝试创建一个删除按钮以从列表中删除项目

    我正在尝试制作一个删除按钮 该按钮将从 order List 中删除项目 我制作的 removeButton 按钮仅从列表中删除一项 然后会显示错误消息 menulist listOrder new menulist order List
  • is not null 和 <>' ' 之间有什么区别

    看看我的例子 两个代码有什么区别 Select name from customers where name is not null Select name from customers where name lt gt 他们做完全不同的事
  • 在 DOM 对象上设置属性时如何避免 no-param-reassign

    我有一个方法 其主要目的是在 DOM 对象上设置属性 function el el expando 我使用 AirBnB 的代码风格 这使得 ESLint 抛出一个no param reassign error 错误分配给函数参数 el n