eslint - 如何修复“重构此函数以始终使用“返回”。来自声纳 js
问题描述
我将 SonarJS 分析应用于我的项目。在下面的代码中发现错误“重构此函数以始终使用“return””。我怎样才能解决这个问题?
var filter1Depth = function(attr0, attr1, val){
var id;
if(val === "vAuto"){
id = "AirConditioner.Indoor.Ventilator";
val = "Auto";
}
return { // Error is generated from this line.
field : attr0,
operator: function(item, value){
if(value == "") return true;
if(!item || !item.length) return;
var i, length = item.length;
if(value == "undefined"){
for( i = 0; i < length; i++ ){
if(typeof item[i][attr1] === 'undefined'){
return true;
}
}
}else{
for(i = 0; i < length; i++){
if(item[i][attr1] == value){
if(id){
if(id === item[i]["id"]) return true;
return;
}
return true;
}
}
}
return;
},
value : val
};
};
另一个例子如下。
var filter1DepthNone = function(attr0, attr1, val){
return { field : attr0, operator: function(item, value){ // error!!
if(value == "") return true;
if(!item || !item.length) return;
var length = item.length;
for(var i = 0; i < length; i++){
if(item[i][attr1] != value){
return;
}
}
return true;
}, value : val};
};
我产生此错误的代码具有类似的模式..
解决方案
在某些块中,您没有返回任何内容 ( return;
, so undefined
),但在同一函数的其他块中,您返回一个布尔值 ( true
/ false
)。
你需要确保你的返回值在一个函数中是一致的——也就是说,如果你在某个地方返回一个布尔值,在同一个函数中返回值的任何地方,你也返回一个布尔值。
推荐阅读
- c# - Npgsql 和 System.Threading.Tasks.Extensions 之间 System.Runtime.CompilerServices.Unsafe 的冲突
- java - 从 JButton 移除边框
- asterisk - Asterisk BridgeWait 如何桥接到一般的桥
- spring-boot - 如何使用@RequestBody 在 Spring Controller 中上传文件?
- react-native - 更改选项卡后如何弹出堆栈顶部?
- json - 我该如何解决这个 kibana 控制台错误
- scala - 在 Spark Scala Dataframe 上结合 When 子句和 tail: _*
- go - 接口中的动态返回类型
- next.js - 如何使用relay+nextjs+react-relay-network-modern-ssr?
- android - 如何从 AccessibilityService 完成当前活动?