优化这段代码 if ( e.offsetY <= 0) { console.log(e.offsetX,e.offsetY,i) if (e.offsetX >0 && e.offsetY >-34) { console.log(e.offsetX, e.offsetY, i, '范围') this.pop = true } else if(e.offsetX < 0 && e.offsetY<=-34) { setTimeout(() => { this.pop = false }, 500); } } if ( e.offsetX <= 0) { setTimeout(() => { this.pop = false }, 500); }
时间: 2023-12-10 20:40:54 浏览: 75
代码中大量的 if else如何优化.doc
5星 · 资源好评率100%
可以优化的地方有:
1. 在代码中出现多次的 `setTimeout(() => {this.pop = false}, 500)` 可以把它提取出来,放到一个函数里面,以减少冗余代码。
2. 可以使用 `if-else if-else` 的方式来简化代码,并且通过对 `if` 条件的重新排列,可以避免重复判断条件。例如:
```javascript
if (e.offsetY <= 0 && e.offsetX > 0 && e.offsetY > -34) {
// 范围内
this.pop = true;
console.log(e.offsetX, e.offsetY, i, '范围');
} else if (e.offsetY <= 0 && e.offsetX < 0 && e.offsetY <= -34) {
// 范围外
setTimeout(() => {
this.pop = false;
}, 500);
} else if (e.offsetX <= 0) {
// 范围外
setTimeout(() => {
this.pop = false;
}, 500);
}
```
优化后的代码如下:
```javascript
if (e.offsetY <= 0) {
if (e.offsetX > 0 && e.offsetY > -34) {
this.pop = true;
console.log(e.offsetX, e.offsetY, i, '范围');
} else if (e.offsetX < 0 && e.offsetY <= -34) {
hidePopup();
}
} else if (e.offsetX <= 0) {
hidePopup();
}
function hidePopup() {
setTimeout(() => {
this.pop = false;
}, 500);
}
```
阅读全文