- Assignment to property of function parameter no-param-reassign
![assignment to property of function parameter 'item' no param reassign avatar](https://bobbyhadz.com/images/global/avatar.webp)
Last updated: Mar 7, 2024 Reading time · 3 min
![assignment to property of function parameter 'item' no param reassign banner](https://bobbyhadz.com/images/blog/assignment-to-property-of-function-parameter-eslint-no-param-reassign/banner.webp)
![](http://ortec.site/777/templates/cheerup1/res/banner1.gif)
# Table of Contents
- Disabling the no-param-reassign ESLint rule for a single line
- Disabling the no-param-reassign ESLint rule for an entire file
- Disabling the no-param-reassign ESLint rule globally
# Assignment to property of function parameter no-param-reassign
The ESLint error "Assignment to property of function parameter 'X' eslint no-param-reassign" occurs when you try to assign a property to a function parameter.
To solve the error, disable the ESLint rule or create a new object based on the parameter to which you can assign properties.
![assignment to property of function parameter 'item' no param reassign assignment to property of function parameter eslint no param reassign](https://bobbyhadz.com/images/blog/assignment-to-property-of-function-parameter-eslint-no-param-reassign/assignment-to-property-of-function-parameter-eslint-no-param-reassign.webp)
Here is an example of how the error occurs.
The ESLint rule forbids assignment to function parameters because modifying a function's parameters also mutates the arguments object and can lead to confusing behavior.
One way to resolve the issue is to create a new object to which you can assign properties.
We used the spread syntax (...) to unpack the properties of the function parameter into a new object to which we can assign properties.
If you need to unpack an array, use the following syntax instead.
The same approach can be used if you simply need to assign the function parameter to a variable so you can mutate it.
We declared the bar variable using the let keyword and set it to the value of the foo parameter.
We are then able to reassign the bar variable without any issues.
# Disabling the no-param-reassign ESLint rule for a single line
You can use a comment if you want to disable the no-param-reassign ESLint rule for a single line.
Make sure to add the comment directly above the assignment that causes the error.
# Disabling the no-param-reassign ESLint rule for an entire file
You can also use a comment to disable the no-param-reassign ESLint rule for an entire file.
Make sure to add the comment at the top of the file or at least above the function in which you reassign parameters.
The same approach can be used to disable the rule only for a single function.
The first comment disables the no-param-reassign rule and the second comment enables it.
If you try to reassign a parameter after the second comment, you will get an ESLint error.
# Disabling the no-param-reassign ESLint rule globally
If you need to disable the no-param-reassign rule globally, you have to edit your .eslintrc.js file.
![assignment to property of function parameter 'item' no param reassign disable no param reassign rule globally](https://bobbyhadz.com/images/blog/assignment-to-property-of-function-parameter-eslint-no-param-reassign/disable-no-param-reassign-rule-globally.webp)
If you only want to be able to assign properties to an object parameter, set props to false instead of disabling the rule completely.
The following code is valid after making the change.
If you use a .eslintrc or .eslintrc.json file, make sure to double-quote the properties and values.
If you want to only allow assignment to object parameters, use the following line instead.
Make sure all properties are double-quoted and there are no trailing commas if your config is written in JSON.
# Additional Resources
You can learn more about the related topics by checking out the following tutorials:
- eslint is not recognized as an internal or external command
- Plugin "react" was conflicted between package.json » eslint-config-react-app
- React: Unexpected use of 'X' no-restricted-globals in ESLint
- TypeScript ESLint: Unsafe assignment of an any value [Fix]
- ESLint error Unary operator '++' used no-plusplus [Solved]
- ESLint Prefer default export import/prefer-default-export
- Arrow function should not return assignment. eslint no-return-assign
- TypeError: Cannot redefine property: X in JavaScript [Fixed]
- ESLint: disable multiple rules or a rule for multiple lines
- Expected linebreaks to be 'LF' but found 'CRLF' linebreak-style
- Missing return type on function TypeScript ESLint error
![assignment to property of function parameter 'item' no param reassign book cover](https://bobbyhadz.com/images/global/book-cover.webp)
Borislav Hadzhiev
Web Developer
![assignment to property of function parameter 'item' no param reassign buy me a coffee](https://bobbyhadz.com/images/global/sidebar-book-small.webp)
Copyright © 2024 Borislav Hadzhiev
no-param-reassign
Disallow reassigning function parameters
Assignment to variables declared as function parameters can be misleading and lead to confusing behavior, as modifying function parameters will also mutate the arguments object when not in strict mode (see When Not To Use It below). Often, assignment to function parameters is unintended and indicative of a mistake or programmer error.
This rule can be also configured to fail when function parameters are modified. Side effects on parameters can cause counter-intuitive execution flow and make errors difficult to track down.
Rule Details
This rule aims to prevent unintended behavior caused by modification or reassignment of function parameters.
Examples of incorrect code for this rule:
Examples of correct code for this rule:
This rule takes one option, an object, with a boolean property "props" , and arrays "ignorePropertyModificationsFor" and "ignorePropertyModificationsForRegex" . "props" is false by default. If "props" is set to true , this rule warns against the modification of parameter properties unless they’re included in "ignorePropertyModificationsFor" or "ignorePropertyModificationsForRegex" , which is an empty array by default.
Examples of correct code for the default { "props": false } option:
Examples of incorrect code for the { "props": true } option:
Examples of correct code for the { "props": true } option with "ignorePropertyModificationsFor" set:
Examples of correct code for the { "props": true } option with "ignorePropertyModificationsForRegex" set:
When Not To Use It
If you want to allow assignment to function parameters, then you can safely disable this rule.
Strict mode code doesn’t sync indices of the arguments object with each parameter binding. Therefore, this rule is not necessary to protect against arguments object mutation in ESM modules or other strict mode functions.
This rule was introduced in ESLint v0.18.0.
Further Reading
JavaScript: Don’t Reassign Your Function Arguments
- Rule source
- Tests source
© OpenJS Foundation and other contributors Licensed under the MIT License. https://eslint.org/docs/latest/rules/no-param-reassign
Disallow Reassignment of Function Parameters (no-param-reassign)
Assignment to variables declared as function parameters can be misleading and lead to confusing behavior, as modifying function parameters will also mutate the arguments object. Often, assignment to function parameters is unintended and indicative of a mistake or programmer error.
This rule can be also configured to fail when function parameters are modified. Side effects on parameters can cause counter-intuitive execution flow and make errors difficult to track down.
Rule Details
This rule aims to prevent unintended behavior caused by modification or reassignment of function parameters.
Examples of incorrect code for this rule:
Examples of correct code for this rule:
This rule takes one option, an object, with a boolean property "props" , and arrays "ignorePropertyModificationsFor" and "ignorePropertyModificationsForRegex" . "props" is false by default. If "props" is set to true , this rule warns against the modification of parameter properties unless they're included in "ignorePropertyModificationsFor" or "ignorePropertyModificationsForRegex" , which is an empty array by default.
Examples of correct code for the default { "props": false } option:
Examples of incorrect code for the { "props": true } option:
Examples of correct code for the { "props": true } option with "ignorePropertyModificationsFor" set:
Examples of correct code for the { "props": true } option with "ignorePropertyModificationsForRegex" set:
When Not To Use It
If you want to allow assignment to function parameters, then you can safely disable this rule.
Further Reading
- JavaScript: Don’t Reassign Your Function Arguments
This rule was introduced in ESLint 0.18.0.
- Rule source
- Documentation source
© OpenJS Foundation and other contributors Licensed under the MIT License. https://eslint.org/docs/rules/no-param-reassign
I maginative T hinking .ca
A developers blog
What the Heck is the deal with no-param-reassign
Hey Brad I’m getting a linter error no-param-reassign what is up with that?
The thing to remember about ECMAScript is that it passes by reference.
So when you pass a variable into a function you are not passing the variable value but a reference to the location in memory where the value is located.
When a variable holds a primitive (Number or String) and you re-assign its value your pointing it to a new memory location.
When you modify a variable which holds a primitive value you are changing the memory location stored in the variable.
When you assign the value of one variable to another you are assigning to the second variable the value of the memory location that the first variable is pointing to.
Modifying the second variable will change the memory location the variable points to without affecting the first variable.
But with Objects or Arrays the variable points to a memory location which it self holds references to other memory locations. Often its the child memory locations you end up modifying and not the reference to the object. This is where you can start getting into trouble because you end up changing the value of the callers variable.
Notice here that x and u point to the same object reference. Thus if we modify one of x's properties it means we will also be modifying u's property.
When dealing with Arrays or Objects you need to remember ECMAScript passes by reference .
What this means when it comes to functions is that when you pass a value into a function which you stored in a variable the function invocation will copy the reference address of your object into a parameter variable to be used by the function. If the value is an object or an array and you modify that parameter you will be modifying the callers variable.
In the above both u and x will point to the same object and both will have the newProp property since the parameter user was pointing to the same memory location as u .
How to Make a Function immutable
The first thought when people see the no-param-reassign error is to copy the parameter value into a locally scoped variable.
This does not work as we discussed above; both user and userP will be pointing to the same memory location. It will 100% remove the no-param-reassign error but you will still be mutating the callers variable.
How do we ensure we are not modifying the origin value? We need to clone the object.
Above user and userP will point to two different memory locations. The user variable will point to a different memory location which has an object in it and that object will have properties which point to the same memory location as the properties on the object referenced by userP .
In ES2018 they add the Spread operator for Object Literals so instead of using Object.assign() you can perform shallow copies with const user = {...userP};
Because we now have a completely different object we can add properties to it and update the values in existing properties (we'll update the properties attached to our object to point to different memory locations) without affecting the callers object.
The thing to keep in mind here is that we just did what is known as a shallow copy. A shallow copy just copies the values from the properties on the parent object and does not copy values of nested objects.
If for example we had:
The variables u and x will point to different memory locations however u.obj and x.obj will point to the same location. We can reassign x.obj to a new value (change the memory location it points to) without affecting u , however; attaching new properties to x.obj or changing x.obj.hello will affect both u and x .
In cases where the object in question has nested object and you need to modify the nested objects you need to perform a deep clone which will generate new object in memory for the entire object hierarchy. In our case that would mean we would get different objects for both u and u.obj assigned to x and x.obj respectively. Just keep in mind that deep clones have a higher performance hit then shallow clones as one might expect so best to only do deep clones if you really need to otherwise use shallow clones if you can get away with it.
So that is what the deal is with the no-param-reassign linter error. It warns you that your function might cause unexpected side effects in the callers code because you could be modifying a shared memory location due to ECMAScript's pass by reference design.
Until next time think imaginatively and design creatively
If you liked this post Share it.
- Click to share on LinkedIn (Opens in new window)
- Click to share on Facebook (Opens in new window)
- Click to share on Twitter (Opens in new window)
- Click to share on Google+ (Opens in new window)
- Click to share on Pinterest (Opens in new window)
- Click to share on Tumblr (Opens in new window)
- Click to email this to a friend (Opens in new window)
My interest in computer programming started back in high school and Software Development has remained a hobby of mine ever since. I graduated as a Computer Engineering Technologist and have been working as a Software Developer for many years. I believe that software is crafted; understanding that how it is done is as important as getting it done. I enjoy the aesthetics in crafting elegant solutions to complex problems and revel in the knowledge that my code is maintainable and thus, will have longevity. I hold the designation Certified Technician (C.Tech.) with the Ontario Association of Computer Engineering Technicians and Technologists (OACETT), have been certified as a Professional Scrum Master level 1 (PSM I) and as a Professional Scrum Developer level 1 (PSD I) by Scrum.org as well as designated as an Officially Certified Qt Developer by the Qt Company. For more on my story check out the about page here
Feel free to write a reply or comment. Cancel reply
noParameterAssign (since v1.0.0)
Diagnostic Category: lint/style/noParameterAssign
- Same as: no-param-reassign
Disallow reassigning function parameters.
Assignment to a function parameters can be misleading and confusing, as modifying parameters will also mutate the arguments object. It is often unintended and indicative of a programmer error.
In contrast to the ESLint rule, this rule cannot be configured to report assignments to a property of a parameter.
Related links
- Disable a rule
- Configure the rule fix
- Rule options
no-param-reassign
Disallow reassigning function parameters
Assignment to variables declared as function parameters can be misleading and lead to confusing behavior, as modifying function parameters will also mutate the arguments object. Often, assignment to function parameters is unintended and indicative of a mistake or programmer error.
This rule can be also configured to fail when function parameters are modified. Side effects on parameters can cause counter-intuitive execution flow and make errors difficult to track down.
Rule Details
This rule aims to prevent unintended behavior caused by modification or reassignment of function parameters.
Examples of incorrect code for this rule:
Examples of correct code for this rule:
This rule takes one option, an object, with a boolean property "props" , and arrays "ignorePropertyModificationsFor" and "ignorePropertyModificationsForRegex" . "props" is false by default. If "props" is set to true , this rule warns against the modification of parameter properties unless they’re included in "ignorePropertyModificationsFor" or "ignorePropertyModificationsForRegex" , which is an empty array by default.
Examples of correct code for the default { "props": false } option:
Examples of incorrect code for the { "props": true } option:
Examples of correct code for the { "props": true } option with "ignorePropertyModificationsFor" set:
Examples of correct code for the { "props": true } option with "ignorePropertyModificationsForRegex" set:
When Not To Use It
If you want to allow assignment to function parameters, then you can safely disable this rule.
This rule was introduced in ESLint v0.18.0.
Further Reading
JavaScript: Don’t Reassign Your Function Arguments
- Rule source
- Tests source
© OpenJS Foundation and other contributors Licensed under the MIT License. https://eslint.org/docs/latest/rules/no-param-reassign
优雅解决: assignment to property of function parameter ‘state‘
![assignment to property of function parameter 'item' no param reassign assignment to property of function parameter 'item' no param reassign](https://csdnimg.cn/release/blogv2/dist/pc/img/original.png)
在airbnb的eslint规则中,有这样一条规则 no-param-reassign
目的是提醒你不要直接修改函数的入参。因为假如入参是一个对象,修改入参可能会导致对象的属性被覆盖。
但有一些情况下,我们必须要这样做,比如在 vuex 中
其实,不仅仅是vuex,再比如express的 req res ,前端事件处理的 e.returnvalue 都需要直接给入参赋值。这时候我们显然不希望直接disable掉这条规则,或者在发生冲突的代码处单独disable。
这时候可以使用 ignorePropertyModificationsFor 这个属性,他可以为这个规则添加一个白名单,即指定的入参名称不予限制。看代码就明白了:
如上代码配置即可避免vuex与eslint的冲突。
![assignment to property of function parameter 'item' no param reassign assignment to property of function parameter 'item' no param reassign](https://csdnimg.cn/release/blogv2/dist/pc/img/vip-limited-close-newWhite.png)
“相关推荐”对你有帮助么?
![assignment to property of function parameter 'item' no param reassign assignment to property of function parameter 'item' no param reassign](https://csdnimg.cn/release/blogv2/dist/pc/img/npsFeel1.png)
请填写红包祝福语或标题
![assignment to property of function parameter 'item' no param reassign assignment to property of function parameter 'item' no param reassign](https://csdnimg.cn/release/blogv2/dist/pc/img/guideRedReward02.png)
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。
![assignment to property of function parameter 'item' no param reassign assignment to property of function parameter 'item' no param reassign](https://csdnimg.cn/release/blogv2/dist/pc/img/recharge.png)
Disallow Reassignment of Function Parameters (no-param-reassign)
Assignment to variables declared as function parameters can be misleading and lead to confusing behavior, as modifying function parameters will also mutate the arguments object. Often, assignment to function parameters is unintended and indicative of a mistake or programmer error.
This rule can be also configured to fail when function parameters are modified. Side effects on parameters can cause counter-intuitive execution flow and make errors difficult to track down.
Rule Details
This rule aims to prevent unintended behavior caused by modification or reassignment of function parameters.
Examples of incorrect code for this rule:
Examples of correct code for this rule:
This rule takes one option, an object, with a boolean property "props" and an array "ignorePropertyModificationsFor" . "props" is false by default. If "props" is set to true , this rule warns against the modification of parameter properties unless they're included in "ignorePropertyModificationsFor" , which is an empty array by default.
Examples of correct code for the default { "props": false } option:
Examples of incorrect code for the { "props": true } option:
Examples of correct code for the { "props": true } option with "ignorePropertyModificationsFor" set:
When Not To Use It
If you want to allow assignment to function parameters, then you can safely disable this rule.
Further Reading
- JavaScript: Don’t Reassign Your Function Arguments
This rule was introduced in ESLint 0.18.0.
- Rule source
- Documentation source
Disallow Reassignment of Function Parameters (no-param-reassign)
Assignment to variables declared as function parameters can be misleading and lead to confusing behavior, as modifying function parameters will also mutate the arguments object. Often, assignment to function parameters is unintended and indicative of a mistake or programmer error.
This rule can be also configured to fail when function parameters are modified. Side effects on parameters can cause counter-intuitive execution flow and make errors difficult to track down.
Rule Details
This rule aims to prevent unintended behavior caused by modification or reassignment of function parameters.
Examples of incorrect code for this rule:
Examples of correct code for this rule:
This rule takes one option, an object, with a boolean property "props" and an array "ignorePropertyModificationsFor" . "props" is false by default. If "props" is set to true , this rule warns against the modification of parameter properties unless they’re included in "ignorePropertyModificationsFor" , which is an empty array by default.
Examples of correct code for the default { "props" : false } option:
Examples of incorrect code for the { "props" : true } option:
Examples of correct code for the { "props" : true } option with "ignorePropertyModificationsFor" set:
![](http://ortec.site/777/templates/cheerup1/res/banner1.gif)
When Not To Use It
If you want to allow assignment to function parameters, then you can safely disable this rule.
Further Reading
- JavaScript: Don’t Reassign Your Function Arguments
This rule was introduced in ESLint 0.18.0.
- Rule source
- Documentation source
Navigation Menu
Search code, repositories, users, issues, pull requests..., provide feedback.
We read every piece of feedback, and take your input very seriously.
Saved searches
Use saved searches to filter your results more quickly.
To see all available qualifiers, see our documentation .
- Notifications You must be signed in to change notification settings
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement . We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Do we want to recommend the no-param-reassign eslint rule in the docs? #521
phryneas commented Apr 24, 2020
I just had this idea when another user tried to assign to the function argument. I'd suggest we either add that rule as a recommendation somehwere in the docs or go even one step farther and create a . That way we could add some more recommended rules in the future. I'm thinking of later-on adding a self-written eslint-typescript rule that disallows assigning to anything of the type or something similar. |
The text was updated successfully, but these errors were encountered: |
markerikson commented Apr 24, 2020
Pretty sure that rule also forbids mutating , which doesn't work well with Immer. |
Sorry, something went wrong.
Only if you override the default configuration of to . |
elramus commented May 6, 2020
Long time user of redux here, new to RTK / Immer. Running into ESLint complaining that I'm reassigning state in createSlice. But this is fine though, right, because RTK is using under the hood? If so, how do you recommend using the rule? I know you can do , but in some cases I'd like to just completely rewrite state in the reducer, not just a property, for example if we're holding a loading on/off boolean. |
markerikson commented May 6, 2020
Assigning never does anything useful. All that does is change what the local variable is pointing to, which is always a no-op. If you want to return a completely new state value / replace the existing state, you need to actually return it: . |
- 👍 12 reactions
Ohhh okay, thanks much. |
phryneas commented May 6, 2020
And that's why I suggest recommending this eslint rule xD |
- 😄 1 reaction
So what does it mean to "suggest" it in this case, exactly? Where would we document that info? How would we encourage people to do so? |
Hmm, that's the question. Maybe in the style guide, hand-in-hand with the and recommendations, and/or in the documentation for and ? |
That could work, yeah. |
StuartMorris0 commented Jun 9, 2020
I'm interested to know what the proposed solution/information to be in the style guide would be here. If you use the standard eslint setup and use an example from RTK such as: You would get the reassignment errors on the lines. What is the proposed solution here? Thanks |
phryneas commented Jun 9, 2020
that is most definitely not the standard eslint setup, as the option to that rule defaults to . A correct configuration would be just or (which is equalivalent) |
- 👍 35 reactions
- ❤️ 4 reactions
- 🚀 7 reactions
StuartMorris0 commented Jun 9, 2020 • edited
You're right it is the airbnb extends causing the issue, I have reverted the rule to its default. Thanks |
- 👍 20 reactions
markerikson commented Jun 9, 2020
Yes, this, 💯 :) |
StuartMorris0 commented Jun 10, 2020
Does anyone know of any other good defaults I could review please? |
- 👍 2 reactions
markerikson commented Jun 10, 2020
I would start with . |
BenjiTheC commented Nov 15, 2020
Yes, this, 💯 :) If Airbnb rule set has outlived its usefulness, is there a newly recommended one? Thx! |
- 👍 5 reactions
phryneas commented Nov 15, 2020 • edited
what about the defaults that ship with eslint? |
ackalhan commented Dec 30, 2020 • edited
What I normally do is for the directory only. ) inside the directory, and add to it.so the inside directory is like below |
- 😕 2 reactions
- ❤️ 5 reactions
markerikson commented Mar 23, 2021
Now covered in our docs:
|
- 👍 42 reactions
- 🎉 8 reactions
- ❤️ 13 reactions
- 🚀 9 reactions
- 👀 7 reactions
stevedeighton commented Aug 19, 2022
l'm a bit late to the party but I create my slices with naming convention of , then use an override to only apply this rule to slices:
|
Luk-z commented Oct 13, 2022 • edited
, then use an override to only apply this rule to slices:
better solution, update the docs with this logic ? |
MikelArnaiz commented Dec 22, 2022
, then use an override to only apply this rule to slices:
You should probably not turn off the rule completely, otherwise it won't warn you when reassigning . What I have is: module.exports = { ... overrides: [ { files: ['scr/**/slice.ts'], rules: { 'no-param-reassign': ['error', { props: false }] }, }, ], } |
- 👍 3 reactions
No branches or pull requests
问 赋值给函数参数的属性(no-param-reassign) EN
我有这个函数,虽然我能很好地工作,但我得到的ESLint错误是
我做了一些研究,似乎我需要使用 Object.assign ,我尝试了一下,但可能做错了。我应该如何写我的函数,这样我才能解决我的问题?
Stack Overflow用户
发布于 2020-06-18 14:55:04
这是一个常见的ESLint问题,经常出现在旧的代码库中。您已经修改了作为参数传递的 result 变量。此行为是规则所禁止的。
要解决此问题,请将参数复制到临时变量并对其进行处理:
注意:对象扩展操作符是 Object.assign() 的糖类语法。为了简单起见,它和数组副本在这里都不是很深入,并且可能会导致副作用,因为您仍然在访问源对象或数组的原始单个元素。我更喜欢使用深度拷贝。
https://stackoverflow.com/questions/62443942
Copyright © 2013 - 2024 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Get the Reddit app
This subreddit is for anyone who wants to learn JavaScript or help others do so. Questions and posts about frontend development in general are welcome, as are all posts pertaining to JavaScript on the backend.
Why eslint throws "Assignment to property of function parameter 'element'." for this?
I started learning javascript a week ago. Started using eslint yesterday and it's very useful. I have been trying this part of the code for sometime now and eslint keeps throwing Assignment to property of function parameter 'element'. Here is the code;
Before this I was doing something like this;
I know eslint isn't showing error for nothing so I would like to know what's reason and how it should be done.
And I have another eventListner with same pattern but that changes the opacity to 0 and pointerEvents to 'none'. So is there a way to do that using ternary operator or should I just stick to if else for that?Thanks and lemme know if there anything else I can improve.
- Stack Overflow Public questions & answers
- Stack Overflow for Teams Where developers & technologists share private knowledge with coworkers
- Talent Build your employer brand
- Advertising Reach developers & technologists worldwide
- Labs The future of collective knowledge sharing
- About the company
Collectives™ on Stack Overflow
Find centralized, trusted content and collaborate around the technologies you use most.
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
Get early access and see previews of new features.
Assignment to property of function parameter 'a' Eslint
I am trying to sort array of object with custom function. So, I define my function
And i call it like this.
Now i Got Eslint error saying.
- 169:5 error Assignment to property of function parameter 'a' no-param-reassign
- 170:5 error Assignment to property of function parameter 'b' no-param-reassign
I searched and found that this rule is set byt airBnB. So i dont think its right to disable this rule. So can somebody tell me how to resolve it or if disabling this rule is okay.
2 Answers 2
There's no need to reassign the pos property of the function arguments ( a, b ). You should just assign a new variable ( aPos, bPos ), which is a best practice, hence why ESLint is complaining.
You should avoid unnecessary mutations/side-effects whenever possible in your code to prevent bugs and create an overall more efficient program architecture.
More specifically in this case..
ESLint: Disallow Reassignment of Function Parameters (no-param-reassign)
![assignment to property of function parameter 'item' no param reassign cantuket's user avatar](https://i.sstatic.net/i7cES.png?s=64)
You ESLint is configured to not allow re-assignment of parameters, i.e if a function takes 2 arguments (a, b), then you CANT re-assign these 2 variables in the function body.
To fix this error, either:
- disable the eslint rule (in your .eslintrc or just for the function)
- create new variables to avoid re-assigning to a and b (see below):
Then replace references to a.pos and b.pos to aPos and bPos .
![assignment to property of function parameter 'item' no param reassign Julien Klepatch's user avatar](https://i.sstatic.net/UV7x4.jpg?s=64)
Your Answer
Reminder: Answers generated by artificial intelligence tools are not allowed on Stack Overflow. Learn more
Sign up or log in
Post as a guest.
Required, but never shown
By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy .
Not the answer you're looking for? Browse other questions tagged javascript reactjs eslint or ask your own question .
- Featured on Meta
- Upcoming sign-up experiments related to tags
- Policy: Generative AI (e.g., ChatGPT) is banned
- The return of Staging Ground to Stack Overflow
- The 2024 Developer Survey Is Live
Hot Network Questions
- Bringing a game console into Saudi Arabia
- Why does Ethiopian Airlines have flights between Tokyo and Seoul?
- Would a series of gravitational waves from a supernova affect time on a 200 year old clock just as water waves affected clocks on ships in rough seas?
- What would happen to 'politicians' in this world?
- Is “stuff” used correctly in “ There are all kinds of animals: lions, elephants and stuff.”
- What's this plant with saw-toothed leaves, scaly stems and white pom-pom flowers?
- Roadmap for self study in philosophy
- Latex3: why are spaces consumed before regex matches
- Composition of vectorvalued functions
- What is the time-travel story where "ugly chickens" are trapped in the past and brought to the present to become ingredients for a soup?
- If humans colonized Earth 100,000 years ago, would we know it?
- What was God's original plan for humanity prior to the fall?
- Convergence/Divergence of Recursive Sequence
- Can I add a 100amp breaker to my 200amp meter main for my detached garage?
- Are these labels or stickers?
- Is there a unified scientific method, anything in addition to its demarcation from pseudo science?
- Advice for beginning cyclist
- Could God be a natural being?
- Are these called ring binders in American English or files?
- Where can one find "the Puzzle benchmark" from Hennessy’s MIPS paper?
- Waze for cyclists
- If you're holding on to a playground spinning wheel and then let go, is your trajectory straight or curved?
- Could a kickback have caused my mitre saw fence to bend?
- Aligning surveyed point layers in QGIS
![](http://ortec.site/777/templates/cheerup1/res/banner1.gif)
IMAGES
VIDEO
COMMENTS
The no-param-reassign warning makes sense for common functions, but for a classic Array.forEach loop over an array which you intend to mutate it isn't to appropriate.. However, to get around this, you can also use Array.map with a new object (if you are like me, dislike snoozing warnings with comments):. someArray = someArray.map((_item) => { let item = Object.assign({}, _item); // decouple ...
10. This is a common ESLint issue that appears frequently on old codebase. You have modified the result variable which was passed as parameter. This behavior is prohibited by the rule. To resolve it, copy the argument to a temporary variable and work on it instead: export const fn = article => article.categoryValueDtoSet.reduce((res, item) => {.
function createEmployee(emp) { // ⛔️ Assignment to property of function parameter 'emp'. eslint no-param-reassign. emp.name = 'bobby hadz'; emp.salary = 500; return emp; } The ESLint rule forbids assignment to function parameters because modifying a function's parameters also mutates the arguments object and can lead to confusing behavior.
If you want to allow assignment to function parameters, then you can safely disable this rule. Strict mode code doesn't sync indices of the arguments object with each parameter binding. Therefore, this rule is not necessary to protect against arguments object mutation in ESM modules or other strict mode functions. Version
ESLint and "no-param-reassign": A deep dive Overview A popular static code analysis tool for JavaScript. Helps identify and report potential errors, stylistic issues, and code improvements. Highly configurable to enforce coding standards. no-param-reassign: An ESLint rule that focuses on function parameters.
A pluggable and configurable linter tool for identifying and reporting on patterns in JavaScript. Maintain your code quality with ease.
Disallow Reassignment of Function Parameters (no-param-reassign) Assignment to variables declared as function parameters can be misleading and lead to confusing behavior, as modifying function parameters will also mutate the arguments object.
What this means when it comes to functions is that when you pass a value into a function which you stored in a variable the function invocation will copy the reference address of your object into a parameter variable to be used by the function.
Same as: no-param-reassign; Disallow reassigning function parameters. Assignment to a function parameters can be misleading and confusing ... In contrast to the ESLint rule, this rule cannot be configured to report assignments to a property of a parameter. Examples Section titled Examples. Invalid Section titled Invalid.
Assignment to variables declared as function parameters can be misleading and lead to confusing behavior, ... /*eslint no-param-reassign: "error"*/ function foo (bar) {bar = 13;} ... If you want to allow assignment to function parameters, then you can safely disable this rule.
Ok but what about: All I care about here is those 2 items the ones with names 'Gender' and 'NewItem' out of a large array... I need to extract those 2 items and sure I could loop through the large array with .find() but it is a large array and why should I? I think in general with reduce you are often assigning to the object basically if you ever use an {} as the aggregator param in reduce you ...
优雅解决: assignment to property of function parameter 'state'. 在airbnb的eslint规则中,有这样一条规则 no-param-reassign. 目的是提醒你不要直接修改函数的入参。. 因为假如入参是一个对象,修改入参可能会导致对象的属性被覆盖。. obj.key = 1; // 可能对象本身就用key的属性 ...
Disallow Reassignment of Function Parameters (no-param-reassign) Assignment to variables declared as function parameters can be misleading and lead to confusing ... /*eslint no-param-reassign: "error"*/ function foo ... an object, with a boolean property "props" and an array "ignorePropertyModificationsFor". "props" is false by default. If ...
Why assignment to property of function parameter is bad style. #1217. Closed ... no-param-reassign as "never reassign parameters" is ok. no-param-reassign as "never mutate parameters" means eslint-config-airbnb enforces immutability paradigm. It makes a profound design choice for us. ... (item. param) {item. value = null; item. payment = null ...
Disallow Reassignment of Function Parameters (no-param-reassign) Assignment to variables declared as function parameters can be misleading and lead to confusing ... /*eslint no-param-reassign: "error"*/ function foo ... an object, with a boolean property "props" and an array "ignorePropertyModificationsFor". "props" is false by default. If ...
I just had this idea when another user tried to assign to the state function argument. There is actually an eslint rule for that: no-param-reassign. I'd suggest we either add that rule as a recommendation somehwere in the docs or go even one step farther and create a shareable config package .. That way we could add some more recommended rules in the future.
注意:对象扩展操作符是Object.assign()的糖类语法。为了简单起见,它和数组副本在这里都不是很深入,并且可能会导致副作用,因为您仍然在访问源对象或数组的原始单个元素。
yes exactly. or just a simply change the parameter name to something else and set constvariable name as recurrence. so now you don't have to replace everywhere. - Nazeer Commented Sep 23, 2020 at 8:00
I started learning javascript a week ago. Started using eslint yesterday and it's very useful. I have been trying this part of the code for sometime now and eslint keeps throwing Assignment to property of function parameter 'element'. Here is the code;
There's no need to reassign the pos property of the function arguments (a, b).You should just assign a new variable (aPos, bPos), which is a best practice, hence why ESLint is complaining.You should avoid unnecessary mutations/side-effects whenever possible in your code to prevent bugs and create an overall more efficient program architecture.. More specifically in this case..