2
JavaScript不要在循環中生成函數並顯示循環複雜性。 我無法繞過JSHint的錯誤消息。下面是我使用的循環:JS提示 - 此功能的循環複雜數字&不要在循環中創建函數
var keys = document.querySelectorAll('#calculator span');
var operators = ['+', '-', 'x', '÷'];
var decimalAdded = false;
for (var i = 0; i < keys.length; i++) {
keys[i].onclick = function (e) {
var input = document.querySelector('.screen');
var inputVal = input.innerHTML;
var btnVal = this.innerHTML;
if (btnVal === 'C') {
input.innerHTML = '';
decimalAdded = false;
} else if (btnVal === '=') {
var equation = inputVal;
var lastChar = equation[equation.length - 1];
equation = equation.replace(/x/g, '*').replace(/÷/g, '/');
if (operators.indexOf(lastChar) > -1 || lastChar === '.'){
equation = equation.replace(/.$/, '');
}
if (equation){
input.innerHTML = (new Function('return ' + equation))();
}
decimalAdded = false;
} else if (operators.indexOf(btnVal) > -1) {
var lastChar = inputVal[inputVal.length - 1];
if (inputVal !== '' && operators.indexOf(lastChar) === -1){
input.innerHTML += btnVal;
}
else if (inputVal === '' && btnVal === '-'){
input.innerHTML += btnVal;
}
if (operators.indexOf(lastChar) > -1 && inputVal.length > 1) {
input.innerHTML = inputVal.replace(/.$/, btnVal);
}
decimalAdded = false;
} else if (btnVal === '.') {
if (!decimalAdded) {
input.innerHTML += btnVal;
decimalAdded = true;
}
} else {
input.innerHTML += btnVal;
}
e.preventDefault();
};
}
如何降低圈複雜度號這個功能是12
可能重複的[我怎麼能減少圈複雜度?](http://stackoverflow.com/questions/17927835/how-could-i-reduce-the-cyclomatic-complexity) –
通過寫東西來減少圈複雜度這不是很複雜。循環複雜性表明概念上的混亂。它也可以被稱爲「意大利麪條索引」。想想這個問題,以及它如何分解,並且可以由碎片組成。然後寫每一塊。然後合併這些碎片。 –