前端代码规范常见错误 二
6、老生常谈 forEach、map 的使用
先看下面的代码,map 中有一个 if 判断,当条件成立返回一个新的对象,此时会有一个问题,遍历数组中不满足的条件的会返回一个 undefined,此时再用 filter 是可以过滤掉,但是此时我们将遍历循环两次,推荐可以使用 forEach 一次遍历将事情处理完毕。
性能方面,取决于遍历时执行的事情的快慢,从本质上来说,他们性能差距不大,当然 for 还更快,但是不利于代码的阅读
\
在我们要遍历一个数组的时候,请记住一个原则:如果需要操作数组中每个元素(比如计算返回新的值),返回一个新的数组,且不需要改变原数组,那么使用 map,其他遍历大概率请使用 forEach,不管是性能及内存的使用都是有利的,当然也不完全死的,需要我们在写代码的时候更加严谨的思考。
\
7、switch 中 break 的使用
我们都很清楚其实在 switch 中使用 break 还是 return 都是可以的,大部分时候是一致,但是也有意外情况,如果是在一个需要 return 的函数中去使用 switch,那么此时 return 会直接跳出当前进程,出现意料之外的情况,所以和大家约定,不管什么情况下,都使用配套的关键字 break,此外,在严格规范下,已经要有 default 进行兜底,除非你对传进来的参数的值非常确定,否则请加上,这也是代码健壮的体现。
8、判断返回 boolean
判断返回的就是一个 boolean 值!这样的地方非常多请大家注意,给人看到都会脸红的
\
9、尽量区别变量名的重复使用
10、多层 if 判断,增加代码性能负担
不推荐写法:
推荐写法:这样写法,更清晰
11、重复申明
\
12、(Vue)不要在 computed 中改变页面变量的值,如果需要改变,请使用 watch
不推荐写法:
推荐写法:
\
13、禁止再循环中出现 await(no-await-in-loop)
在迭代器的每个元素上执行运算是个常见的任务。然而,每次运算都执行 await
,意味着该程序并没有充分利用 async
/await
并行的好处。
通常,代码应该重构为立即创建所有 promise,然后通过 Promise.all()
访问结果。否则,每个后续的操作将不会执行,直到前一个操作执行完毕。
不推荐写法:
推荐写法:
14、禁止条件表达式中出现赋值操作符(no-cond-assign)
在条件语句中使用赋值操作符是有效的,而且条件始终执行,这样是很不靠谱的逻辑行为
\
评论