定义循环外该功能
我有以下代码:定义循环外该功能
for (var entry in metadata) { if (metadata.hasOwnProperty(entry)) {
var varName = metadata[entry].variableName;
if (metadata[entry].multipleValues === "false") {
if (angular.isDefined(vm[varName]) && (vm[varName] !== null) && vm[varName].id !== null) {
filters.push(factory.buildEntry(metadata[entry].variableName, vm[varName].id, null, factory.filterOperators.textContains));
}
} else {
if (angular.isDefined(vm[varName]) && (angular.isArray(vm[varName])) && (vm[varName].length > 0)) {
filters.push(factory.buildEntry(metadata[entry].variableName, null, vm[varName].map(function (item) {
return item.id;
}), factory.filterOperators.textContains));
}
}
}
}
但SonarQube不断告诉我Define this function outside of a loop.
,我有这个循环中的唯一功能是匿名函数我传递给Array.prototype.map()
方法:
function (item) { return item.id;
}
如果我在循环之外定义它,那么它将是无用的,因为它的主体只包含一行代码。
为什么我得到这个错误?以及如何告诉SonarQube跳过它。
回答:
你怎么样定义它的循环
var mapFunction = function (item) { return item.id;
};
for (var entry in metadata) {
if (metadata.hasOwnProperty(entry)) {
var varName = metadata[entry].variableName;
if (metadata[entry].multipleValues === "false") {
if (angular.isDefined(vm[varName]) && (vm[varName] !== null) && vm[varName].id !== null) {
filters.push(factory.buildEntry(metadata[entry].variableName, vm[varName].id, null, factory.filterOperators.textContains));
}
} else {
if (angular.isDefined(vm[varName]) && (angular.isArray(vm[varName])) && (vm[varName].length > 0)) {
filters.push(factory.buildEntry(metadata[entry].variableName, null, vm[varName].map(mapFunction), factory.filterOperators.textContains));
}
}
}
}
您可以指定功能的变量,然后将该变量当作一个函数
var foo = function(){console.log('bar')}; foo();
你的情况之外将映射函数分配给一个变量,然后将该变量传递给.map()
也可以提高效率因为每次循环运行时函数都不必重新实例化。它可以重复使用相同的功能。
一旦封闭函数结束执行循环,变量就不复存在。
以上是 定义循环外该功能 的全部内容, 来源链接: utcz.com/qa/266276.html