定义循环外该功能

我有以下代码:定义循环外该功能

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

回到顶部