避免对函数参数的修改


在函数体中修改函数参数时,ESLint是这样提示的:
Assignment to property of function parameter 'options'.(no-param-reassign)


错误的写法:

const makePerson = function (favoriteColor, name, age) {
    if (arguments.length < 3) {
        favoriteColor = "green";
        name = arguments[0];
        age = arguments[1];
    }

    return {
        name: name,
        age: age,
        favoriteColor: favoriteColor
    };
};

正确的写法:

const makePerson = function (favoriteColor, name, age) {
    if (arguments.length < 3) {
        return {
            name: arguments[0],
            age: arguments[1],
            favoriteColor: "green"
        }
    }
}

当需要使用修改过后的函数参数时,将函数参数复制一份进行修改使用。
错误的写法:

const requestInterceptor = (url: string, options: any) => {
  if (url !== "/api/getToken") {
    options.headers.Authorization = getToken()
  }
  return {url, options}
}

正确的写法:

const requestInterceptor = (url: string, options: any) => {
  const retOptions = options
  if (url !== "/api/getToken") {
    retOptions.headers.Authorization = getToken()
  }
  return {url, retOptions}
}

参考:

  • 禁止对函数参数再赋值 (no-param-reassign)
  • JavaScript: Don't Reassign Your Function Arguments