避免对函数参数的修改
在函数体中修改函数参数时,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