簡體   English   中英

分配給 function 參數的屬性(no-param-reassign)

[英]Assignment to property of function parameter (no-param-reassign)

我有這個 function 雖然我的工作很好,但我收到 ESLint 錯誤說

57:5  error  Assignment to property of function parameter 'result'  no-param-reassign   
66:5  error  Assignment to property of function parameter 'result'  no-param-reassign

我不確定如何正確解決

export const fn = article => article.categoryValueDtoSet.reduce((result, item) => {
  if (item.language) {
    const language = item.language.languageValue;
    const category = item.categoryValue;
    result[language] = category;
  }
  return result;
}, { it: undefined, de: undefined, en: undefined );

我做了一些研究,似乎我需要使用Object.assign並且我嘗試過,但可能做錯了。 我應該如何寫我的 function 才能解決我的問題?

這是一個常見的 ESLint 問題,經常出現在舊代碼庫中。 您已經修改了作為參數傳遞的result變量。 這種行為是規則禁止的。

要解決它,請將參數復制到臨時變量並對其進行處理:

export const fn = article => article.categoryValueDtoSet.reduce((res, item) => {
    const result = {...res}; // if result is object
    // const result = [...res]; // if result is array
    // Rest of your code can work without change
}

注意: object 擴展運算符是Object.assign()的糖語法。 為簡單起見,它和數組副本在這里都不深,並且可能會導致副作用,因為您仍在訪問源 object 或數組的原始單個元素。 更喜歡使用深層副本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM