函数抛出 eslint.org 保护错误



使用它 for 循环构建一个没有问题的查询字符串。

for (const key in parameters) {
const value = parameters[key];
qs += `${encodeURIComponent(key)}=${encodeURIComponent(value)}&`;
}

直到现在,我注意到 ESLint 红色衬里。 文档说明如下:

https://eslint.org/docs/rules/guard-for-in

/*eslint guard-for-in: "error"*/
for (key in foo) {
if (Object.prototype.hasOwnProperty.call(foo, key)) {
doSomething(key);
}
}
for (key in foo) {
if ({}.hasOwnProperty.call(foo, key)) {
doSomething(key);
}
}

~

只需像这样将代码包装在 for 循环中即可

for (const key in parameters) {
if (!parameters.hasOwnProperty(key)) { continue; }
const value = parameters[key];
qs += `${encodeURIComponent(key)}=${encodeURIComponent(value)}&`;
}

parameters.hasOwnProperty(key)此检查对象中是否存在属性/键parameters

但这仍然可能不是你想要的,因为它现在说:for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array.eslintno-restricted-syntax

正如那里所建议的,这个棉绒干净:

Object.keys(parameters).forEach((key) => {
const value = parameters[key];
qs += `${encodeURIComponent(key)}=${encodeURIComponent(value)}&`;
});

最新更新