gpt4 book ai didi

javascript - 我应该如何重构这个嵌套的 IF 语句?

转载 作者:行者123 更新时间:2023-12-02 22:45:22 25 4
gpt4 key购买 nike

我有这个函数,它有超过 3 个嵌套的 if 语句(函数中有 4 个嵌套的 If 语句)。我正在尝试解决 Sonar 问题,其中提到重构此代码以不嵌套超过 3 个 IF/FOR/WHILE/TRY 语句。我四处搜寻,但找不到任何太有用的东西,是否可以减少? - 如果是这样,我该怎么做?如有任何反馈,我们将不胜感激

这是函数

function find(animals) {

var animalsCode = getByanimals(animals);

if (typeof animalsCode !== 'undefined' && !isanimalsSupported(animalsCode)) ---> Nesting 1{

var url = $('.menu-select-animals li[data-animals="' + animalsCode + '"] a').attr('href');
var newQuery = '';

if (url) { ---->Nesting 2
var redirectQuery = '';
if (window.location.search) {

//some logic
}
if (url.indexOf('?') > -1) { ---->Nesting 3

//some logic

if (typeof join[1] !== 'undefined') { ---->Nesting 4

//some code
}
}

if (typeof mergedQueries !== 'undefined');
}
} else {
//some code
}
else {
handleanimals();
}
}
return {
handleanimals();
},

windows: function() {
if (typeof theSrc !== 'undefined') {
// some logic
}

if (typeof animalsCheckTheSrc !== 'undefined') {

if (animalsCookie !== animalsCheckTheSrc) {
// some logic
}
checkanimalsCookie(animalsCheckTheSrc);
} }}};
})(jQuery);

最佳答案

很难推理你的函数,因为它不返回任何内容。我将很难跟踪依赖于这些仅具有副作用的函数的程序的流程。

但是,您可能可以做的一件事是进一步分解该函数并开始使用返回值。例如,拆分这段代码,并在新函数中返回redirectURL。

if (redirectURL) {    ---->Nesting 2

var pageQuery = '';

var redirectQuery = '';
if (window.location.search) {

pageQuery = window.location.search.substr(1).split('&');

}
if (redirectURL.indexOf('?') > -1) { ---->Nesting 3

var redirectSplit = redirectURL.split('?');

redirectURL = redirectSplit[0];


if (typeof redirectSplit[1] !== 'undefined') { ---->Nesting 4

redirectQuery = redirectSplit[1].split('&');

}
}
var mergedQueries = com.trp.fai.utility.mergeStringArrays(redirectQuery, pageQuery);



if (typeof mergedQueries !== 'undefined' && mergedQueries.length > 0) {

newQuery = '?' + mergedQueries.join('&');

}
} else {

redirectURL = 'http://corporate.troweprice.com';

newQuery = '?src=' + countryCode;

}

如果您需要返回多个项目,您可以使用全局变量或返回一个对象并在另一侧对其进行解构。

关于javascript - 我应该如何重构这个嵌套的 IF 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58424220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com